반응형
컴포넌트 스캔 주요 기능
- 스캔 위치 설정
- @Configuration 으로 등록된 클래스의 패키지 내에서만 빈을 찾아서 등록한다.
@SpringBootApplication
@SpringBootAplication는 auto-configuration을 담당한다. application class에서 extra configuration을 정의하거나 component scan을 해준다.
@SpringBootApplication 하나만으로 @EnableAutoConfiguration,@ComponentScan,@Configuration세 가지 Annotation을 사용한 것과 같은 동작을 할 수 있다.
- 필터 : 어떤 애노테이션을 스캔 할지 또는 하지 않을지
@Component
- @Repository
- @Service
- @Controller
- @Configuration
class 상단에 @Component , @Repository , @Service , @Controller 어노테이션이 붙으면 자동으로
IoC 컨테이너에 Bean으로 등록이 된다.
컴포넌트 계열 어노테이션: 기본 스테레오타입 어노테이션. 이 어노테이션들을 붙인 클래스는 빈 객체가 된다. 클래스에 붙여서 해당 클래스가 컴포넌트 스캐닝의 대상이고, 스프링에 의해서 관리될 것임을 표시한다. 즉 <bean> XML 설정파일에서 <bean>으로 선언한 것과 같은 효과를 낸다. |
동작 원리
- @ComponentScan은 스캔할 패키지와 애노테이션에 대한 정보
- 실제 스캐닝은 ConfigurationClassPostProcessor라는 BeanFactoryPostProcessor에 의해 처리 됨.
펑션을 사용한 빈 등록
성능상의 이점이 있다. 여기서 성능이란? 애플리케이션의 구동타임.
하지만, 성능이 좋다고해서 컴포넌트 스캔을 버리고 사용하는 것은 반대.
(아직 이해 못해서 못올림.....ㅠ)
반응형