1. 스프링빈의 싱글톤 보장
스프링 컨테이너는 싱글톤 레지스트리이므로, 스프링빈의 싱글톤을 보장해야 함
@Test
void configurationDeep() {
ApplicationContext ac = new
AnnotationConfigApplicationContext(AppConfig.class);
//AppConfig도 스프링 빈으로 등록된다.
AppConfig bean = ac.getBean(AppConfig.class);
System.out.println("bean = " + bean.getClass());
//출력: bean = class hello.core.AppConfig$$EnhancerBySpringCGLIB$$bd479d70
}
2. 동작원리
만약 @Configuration 이 아닌 @Bean만 적용한다면?
- 스프링빈으로 등록은 되지만 싱글톤 보장이 되지 않고, 호출시마다 새로운 인스턴스를 생성하게 됨