본문 바로가기
Spring/Spring Core

[Section 1] IoC 컨테이너 4부: @Component와 컴포넌트 스캔

by kevinntech 2020. 9. 3.

해당 게시물은 백기선님의 스프링 프레임워크 핵심 기술 강좌를 정리한 내용 입니다.

 

1. @ComponentScan

 

- @ComponentScan@Component 애노테이션이 있는 클래스들을 스캔하여 빈으로 등록한다.

 

- BasePackages는 입력된 패키지의 경로를 기준으로 스캔을 시작한다.

  (패키지의 경로를 문자열로 입력 받기 때문에 type-safe 하지 않음)

 

   BasePackageClasses는 입력된 클래스가 위치한 패키지를 기준으로 스캔을 시작한다.

 

- 스프링 부트에서는 @SpringBootApplication 애노테이션이 붙어 있는 클래스가 컴포넌트 스캔의 시작 지점이다.

 

2. @ComponentScan의 주요 기능

 

- 스캔 위치를 설정하고, 어떤 애노테이션을 스캔 할지 또는 하지 않을지 결정하는 필터(Filter) 기능을 가지고 있다.

 

3. @Component를 확장한 애노테이션

 

      ① @Repository

 

      ② @Service

 

      ③ @Controller

 

      ④ @Configuration

 

4. 컴포넌트 스캔의 동작 원리

 

- @ComponentScan은 BeanFactoryPostProcessor를 구현한 ConfigurationClassPostProcessor에 의해 처리된다.

 

- BeanFactoryPostProcessor는 다른 모든 Bean들을 찾아 BeanFactoryPostProcessor의 구현체를 적용하여

   빈(Bean)으로 등록한다.

 

    ※ 다른 Bean이란 우리가 직접 등록하는 Bean들을 말한다.
         @Bean, @Respository 등

댓글