내용 정리
- CH.1 - 객체지향 설계와 스프링
- CH.2 - 스프링 예제 만들기
- CH.3 - 객체 지향 원리 적용
- CH.4 - 스프링 컨테이너와 스프링 빈
- CH.5 - 싱글톤 컨테이너
- CH.6 - 컴포너트 스캔과 의존관계 자동 주입 시작
- CH.7 - 의존관계 자동 주입
- CH.8 - 빈 생명주기 콜백
- CH.9 - 빈 스코프 → 나중에 다시 정리
2회독
- @Configuration을 통해 스프링 빈을 등록하면 빈을 등록할 때 사용한 메서드 이름이 빈 이름이 된다.
- @Configuration 에 @Bean 이 붙어있는 메서드를 모두 호출해서 반환된 객체를 스프링 컨테이너에 등록한다.
AppilcationContext ac = new AnnotationCofigApplcatioContext(Appconfig.class)
위와 같이 등록해야 AppConfig에 있는 Bean들이 스프링 컨테이너에 등록된다.
- getBeanDefinitionName → BeanDefinition 가져오면 Role 같은 정보들이 있다.
- 이걸 통해서 스프링이 등록한 거 말고 내가 등록한 빈만 모아서 볼수도 있음.
- 스프링 빈에는 상태를 두지 말자. → 싱글톤이라 멀티스레드 상황에서 주의해야함.
- @Configuration 을 붙이면 CGLIB 으로 빈이 등록되어 @Bean 이 싱글톤으로 만들어진다. → Configuration을 안붙이면 싱글톤으로 안만들어짐. → 그냥 순수하게 @Bean이 붙어있는 메서드 하나하나 다 실행시킨다.
- 빈은 자동으로도 등록할 수 있고 수동으로도 등록할 수 있다.
- 자동 → @Component 류 어노테이션 + @ComponentScan
- 수동 → @Configuration + @Bean 으로 메서드 호출하기
- 이때 자동 등록은 주로 비즈니스 로직인 경우
- 수동 등록은 DataSource 설정처럼 기술지원 빈들인 경우