[Spring] 탐색 위치와 기본 스캔 대상

@ComponentScan의 탐색 위치와 기본 스캔 대상에 대하여 알아보자.


탐색할 패키지의 시작 위치 지정

모든 자바 클래스를 다 스캔하면 시간이 오래 걸린다. 그래서 꼭 필요한 위치부터 탐색하도록 시작위치를 지정할 수 있다.

@ComponentScan(
	basePackages = "hello.core",
}

basePackages 는 탐색할 패키지의 시작 위치를 지정할 수 있다. 이 패키지를 포함해서 하위 패키지를 모두 탐색한다. 

@ComponentScan(
          basePackages = {"hello.core", "hello.service"}
}

위와 같이 여러 시작 위치를 지정할 수도 있다. 

 

만약 지정하지 않으면, @ComponentScan 이 붙은 설정 정보 클래스의 패키지가 시작 위치가 된다(Default).

 

권장하는 방법은 패키지 위치를 지정하지 않고, 설정 정보 클래스의 위치를 프로젝트 최상단에 두는 것이다.(최근 스프링 부트도 이 방법을 기본으로 제공한다...!)

 

컴포넌트 스캔 기본 대상

컴포넌트 스캔은 @Comppnent 뿐만 아니라 다음과 같은 내용도 추가로 대상에 포함한다. 

  • @Component : 컴포넌트 스캔에서 사용
  • @Controller : 스프링 MVC 컨트롤러에서 사용
  • @Service : 스프링 비즈니스 로직에서 사용
  • @Repository : 스프링 데이터 접근 계층에서 사용
  • @Configuration : 스프링 설정 정보에서 사용