[Spring][IoC] @Component와 컴포넌트 스캔(Component Scan)
2022. 11. 1. 10:49ㆍJAVA/Spring
1. 컴포넌트 스캔(Component Scan)의 주요기능
컴포넌트 스캔은 스프링 프레임워크가 스프링 빈(Bean)으로 등록할 준비가 되어있는 클래스들을 스캔한 다음 빈으로 등록하는 기능입니다. 컴포넌트의 주요 기능은 2가지입니다.
- 스캔 범위 : 컴포넌트를 어디부터 어디까지 스캔할지 탐색 범위를 설정
- 필터링 : 컴포넌트 스캔중 특정한 클래스는 빈으로 생성하지 않음
2. 컴포넌트 스캔 대상
다음 애노테이션들은 @Component 애노테이션을 갖고 있기 때문에 컴포넌트 스캔의 대상이 되어 빈으로 등록됩니다.
- @Component
- @Repository
- @Service
- @Controller, @RestController
- @Configuration
3. @ComponentScan의 동작 원리
- @ComponentScan 애노테이션은 스캔할 패키지 범위와 애노테이션에 대한 정보를 가지고 있음
- 실제 스캐닝은 BeanFactoryPostProcessor라는 인터페이스의 구현체인 ConfigurationClassPostProcessor에 의해서 처리됨
- BeanFactoryPostProcessor 빈 : 다른 빈들이 생성되기 이전에 실행됨. 이 빈을 수행하여 컴포넌트 스캔을 수행함
References
[인프런] 스프링 프레임워크 핵심 기술
'JAVA > Spring' 카테고리의 다른 글
[SprinBoot] 스프링부트 기본 로거 설정 (0) | 2022.11.06 |
---|---|
[SpringBoot] 프로파일(Profile) (0) | 2022.11.01 |
[Spring] Null-safety : Null 관련 애노테이션 (0) | 2022.10.31 |
[Spring] 스프링 AOP : @AOP (0) | 2022.10.31 |
[Spring] 프록시 기반 AOP (0) | 2022.10.30 |