@Component
를 사용하면 Componenet Scan으로 쉽게 빈으로 등록 가능하고,
@Bean
을 사용하면 Configuration
클래스에서 스프링 빈으로 객체를 등록하고 싶을 때 직접 생성해서 등록한다고 알고 있었다.
@Component
와 @Bean
모두 스프링 빈으로 등록된다.
두 개의 annotation은 정확히 무슨 차이가 있을까?
우선 컴포넌트와 빈 어노테이션 Declaration을 살펴보았다.
@Target
: 선언할 수 있는 타입
@Component
ElementType.TYPE
: Class, interface (including annotaion type), or enum declaration@Bean
ElementType.TYPE
: Method declarationElementType.ANNOTATION_TYPE
: Annotation type declaration@Component
@Bean