@Component
어노테이션이 있는 클래스를 자동으로 찾아서 빈으로 등록한다.@Component
하위 어노테이션으로 @Configuration
, @Controller
, @Service
, @Repository
등이 있다.@Bean
을 제공하는 클래스의 경우 반드시 @Configuration
을 명시해 주어야 싱글톤이 보장된다.📌 @Bean(initMethod)
어노테이션의 initMethod 속성에 초기화 작업에 사용할 메서드 이름을 작성한다.
@Configuration
을 사용한다. @Bean
이 있는 메소드를 여러 번 호출하여도 항상 동일한 객체를 반환하여 싱글톤을 보장한다.@Configuration(proxyBeanMethod=true)
: 생성된 Bean들은 싱글톤을 보장받는다. (기본 값이 true
)@Configuration(proxyBeanMethod=false)
: 생성된 Bean들은 싱글톤을 보장받지 못하게 된다. 즉, 동일한 클래스의 Bean을 여러 개 생성하면, 각각이 서로 다른 인스턴스로 만들어진다.프록시 패턴 ❓
개발자가 직접 제어 가능하다면
@Component
,
직접 제어가 불가능하다면@Configuration
,@Bean
을 사용한다.
[Spring] @Configuration 안에 @Bean을 사용해야 하는 이유, proxyBeanMethods - (2/2)
[Spring] 빈 등록을 위한 어노테이션 @Bean, @Configuration, @Component 차이 및 비교 - (1/2)
[디자인패턴] 프록시패턴(Proxy Pattern)
Spring bean LifeCycle
스프링 빈 생명주기(Bean Lifecycle) 메서드와 실행 순서
프록시(Proxy) 패턴 - 완벽 마스터하기
[Spring] @Configuration과 프록시 패턴 (w. proxyBeanMethod)