김영한님의 스프링 핵심 원리 - 기본편
의 컴포넌트 스캔을 정리해보겠습니다.
@ComponentScan
- @Component가 붙은 클래스를 스캔해 스프링 빈으로 등록함
- 탐색 범위는 default로 @ComponentScan이 붙은 패키지/하위 패키지이다. 직접 지정할 수 도 있다. 하지만 전자의 방법이 SpringBoot에서도 사용하는 좋은 방법이다.(SpringBoot에선 @ComponentScan이 붙은 객체를 패키지 최상단에 넣어놈)
- @SpringBootApplication에도 붙어있음
동작방식
1. 빈 등록
@ComponentScan은 @Component가 붙은 모든 클래스를 스프링 빈으로 등록한다(탐색 범위는 지정된 패키지거나, 명시적으로 지정돼있지 않으면 @ComponentScan이 붙은 클래스가 있는 패키지/하위패키지이다.)
2. @Autowired 의존관계 자동 주입
기본 조회 전략은 타입이 같은 빈을 찾아서 주입하는 것