- @Bean
- 컨트롤이 불가능한 외부 라이브러리의 객체
- instantiate하는 메소드에 @Bean으로 선언하면 Spring에 bean으로 등록됨
- @Bean annotation 내부에서 @Target(ElementType.METHOD)로 정의되어 있어서 메소드 선언부에서만 사용 가능함
- @Component
- 직접 컨트롤이 가능한 객체
- @Component annotation 내부에서 @Target(ElementType.TYPE)으로 정의되어 있어서 클래스, 인터페이스, Enum 선언부에서만 사용 가능함
- 이 annotation으로 등록된 bean은 @ComponentScan의 검색 대상이 됨
- Controller나 Service도 Component이지만 @ComponentScan의 검색 대상에서는 제외됨