지금 까지는 new ClubMapStore() 처럼 직접 객체를 생성하여 clubStore.create(club) 처럼 써왔음
# 지금까지의 방식
A 라는 클래스에서 B라는 클래스의 인스턴스를 사용하고 싶을 때
1. 생성
2. 참조정보를 가지고 B 클래스에 접근
# IOC 방식
A 라는 클래스는 B 라는 클래스의 존재도 모름. 다만 A 클래스는 B클래스가 구현하고 있는 인터페이스에 대한 참조만 가지고 있다.
IOC 컨테이너가 B 라는 클래스의 객체의 생성부터 생성한 B 객체의 인스턴스정보를 A라는 클래스에 전해줌.
( 이 때 우리가 해야할 일은 IOC컨테이너가 B클래스의 객체를 생성하고 의존관계를 주입할 수 있도록 설정정보들을 기록해 주는 것.-> .xml 파일로 설정해주는 것(빈등록절차) ) Dependancy Injection
옛날 방식의 bean 등록. property 는 setter 주입 쓴다는 뜻. 우리가 아까 쓸 때는 constructor-arg -> 생성자 주입함
- 객체 생성에 대한 주도권을 객체를 필요로 하는 곳으로 넘겨주어 필요할 때 필요한 곳에서 객체를 생성하는 방법.
- ClubServiceLogic 에서는 ClubMapStore의 존재를 모르는 상태에서 ClubMapStore의 메서드를 ClubStore 인터페이스의메서드를 호출 함으로써 사용할 수 있게됨.
# 용어
ApplicationContext 는 BeanFactory 를 확장한 개념 ( 싱글톤으로 관리 등등.. 여러 기능 추가 )
WebApplicationContext는 Web환경에 필요한 기능 추가된 ApplicationContext
# 메타정보 설정 3가지 방법
1. XML 문서 ( 수동 )
우리가 작성 했던 ApplicationContext.xml 처럼 작성 ( 예전 방식 )
2. Annotations ( 자동 )
@Component 를 포함한 어노테이션 등을 붙이는 방법 ( ex. @Service, @Controller, @Repository )
3. 자바 코드 ( 수동 )
@Configuration 달고 각 메서드에 @Bean 붙이는 방법
2. Annotations ( 가장 많이 사용 )
- base-package를 설정 후 그 패키지부터 컴포넌트 스캔
- 그 후 빈 등록 원하는 클래스 위에 어노테이션
# Bean의 scope 관리
보통 싱글톤으로 쓴다. ( 디폴트 값이기도 함 ) - 싱글톤 패턴이 아니라 싱글톤 레지스트리 기법을 이용하여 단일객체를 보장해줌 (어려운 말 그냥 적어둠)
스프링 IOC 컨테이너에 의해서 bean이 생성될 때 처음에 생성되고, 의존성이 주입되고 전후로 초기메서드, 소멸메서드 사용할 수 있다. -> 이 정도만 알아두기 ( 잘 안 씀 )
본 자료를 참고하였습니다.
꾸준히 다시보자.
1. 220730
2. 220812
3. 220915
'Java, Spring > Spring5 기초 정리' 카테고리의 다른 글
3-3강 REST API의 이해 (0) | 2022.07.26 |
---|---|
3-1강 Spring Boot의 이해 (0) | 2022.07.26 |
2-9강 MemberServiceLogic 구현 (0) | 2022.07.25 |
2-8강 구현- MemberMapStore 구현 (0) | 2022.07.25 |
2-7강 ClubSerivceLogic 구현 (0) | 2022.07.25 |