프로젝트에 속해있는 모든 클래스를 컴포넌트 스캔할 경우 많은 시간이 소요된다. 따라서 꼭 필요한 위치부터 검색할 수 있도록 시작 위치를 지정해 줄 수 있다.
@ComponentScan(
basePackages = "hello.core",
)
basePackages
는 탐색할 패키지의 시작 위치를 지정한다. 이 패키지를 포함해서 하위 패키지까지 모두 탐색한다.basePackages = {"hello.core", "hello.service"}
basePackageClasses
는 지정한 클래스의 패키지를 탐색 시작 위로 지정한다.권장하는 방법
패키지 위치를 지정하지 않고 설정 정보 클래스의 위치를 프로젝트의 최상단에 두는 것이 좋다. 스프링 부트도 이 방법을 기본으로 제공한다.
참고로 스프링 부트를 사용하면 스프링 부트의 대표 시작 정보인@SpringBootApplication
을 이 프로젝트 시작 루트 위치에 두는 것이 관례라고 한다.
(이 설정 안에@ComponentScan
이 포함되어 있다.)
컴포넌트 스캔은 @Component이외에도 아래와 같은 내용도 추가로 포함된다.
참고
애노테이션은 상속관계가 없으며, 지정된 애노테이션을 인식할 수 있는 것은 자바가 지원하는 기능이 아닌 스프링이 지원하는 기능이다.
컴포넌트 스캔 용도말고도 다른 스프링 부가 기능을 수행한다.