Spring이 지정된 패키지 이하를 탐색하여 특정 어노테이션 (@Annotation)이 붙은 클래스들을 찾아내고, Spring 빈 (Bean)으로 등록하는 자동 설정 기능이다. 컴포넌트 스캔의 기본 범위는 @SpringBootApplication이 선언된 클래스의 하위 패키지 전체이다.
✏️
@SpringBootApplication어노테이션의 조합 요소
@SpringBootApplication은 아래 세 어노테이션을 묶어놓은 메타 어노테이션이다.
@SpringBootConfiguration: Spring Boot의 설정 파일임을 명시한다. 내부적으로@Configuration과 동일하다.@EnableAutoConfiguration: 자동 설정 (Auto Configuration) 기능을 활성화한다.@ComponentScan: 해당 패키지 및 하위 패키지의@Component,@Service,@Repository등의 Bean을 자동 탐색한다.
✏️
@SpringBootApplication(scanBasePackages = {...})처럼scanBasePackages에 스캔 범위를 전달하여, 스캔 범위를 제한할 수 있다.
Spring Boot의 스테레오타입 (Stereotype) 어노테이션 (@Component, @Service, @Repository, @Controller, @RestController, @Configuration, @ConfigurationProperties, @EnableAutoConfiguration)이 붙은 클래스를 스캔한다.