탐색 위치와 기본 스캔 대상

현시기얌·2022년 3월 4일
0

Spring 핵심원리

목록 보기
8/15

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

@ComponentScan{
    basePackages = "hello.core",
    ...
}
  • basePackages : 탐색할 패키지이 시작 위치를 지정한다. 이 패키지를 포함해서 하위 패키지를 모두 탐색한다.
  • basePackageClasses : 지정한 클래스의 패키지를 탐색 시작 위치로 지정한다.
  • 만약 지정하지 않으면 @ComponentScan이 붙은 설정 정보 클래스의 패키지가 시작 위치가 된다.

권장하는 방법

  • 패키지 위치를 직접 지정하지 않고 설정 정보 클래스의 위치를 프로젝트 최상단에 두면 좋다. (스프링 부트도 이런 방법 사용)

컴포넌트 스캔 기본 대상

컴포넌트 스캔은 @Component 뿐만 아니라 아래의 내용도 추가 대상에 포함한다.

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

cf) 사실 애노테이션에는 상속관계라는 것이 없다. 그래서 이렇게 애노테이션이 특정 애노테이션을 들고 있는 것을 인식할 수 있는 것은 자바 언어가 지원하는 기능은 아니고 스프링이 지원하는 기능이다.

컴포넌트 스캔 기본 대상 부가 기능

  • @Controller : 스프링 MVC 컨트롤러로 인식
  • @Repository : 스프링 데이터 접근 계층으로 인식하고, 데이터 계층의 예외를 스프링 예외로 변환해준다.
  • @Configuration : 스프링 설정 정보로 인식하고 스프링 빈이 싱글톤을 유지하도록 추가 처리를 한다.
  • @Service : 특별한 처리는 하지 않는다. 하지만 비즈니스 계층을 인식하는데 도움이 된다.
profile
현시깁니다

0개의 댓글