2016-06-20 4 views
2

이상한 문제가 발생했습니다. 나는 최상위 패키지가 스캐닝에 지정되면 컴포넌트 스캔이 하위 패키지를 재귀 적으로 스캔한다는 인상하에있다.구성 요소 스캔 하위 패키지 스캔 안 함

내 리포지토리와 엔터티는 프로젝트의 종속성입니다. 패키지 이름은 com.foo.bar.xyz이고, 어플리케이션 설정은 com.foo.bar 패키지입니다. @EnableJpaRepositories과 함께 @ComponentScan(basePackages = "com.foo.bar")을 쓸 때 저장소 빈을 찾을 수 없다는 오류가 발생합니다.

위와 같이 구성 검사와 함께 @EnableJpaRepositories(basePackages = com.foo.bar.xyz)과 같은 최상위 저장소 패키지를 지정하면 저장소가 제대로 검색됩니다.

이제는 리포지토리와 엔티티가 메이븐 종속성으로 주입되기 때문에 이런 일이 발생합니까? 구성 요소 스캔의 재귀 부분은 서브 패키지 또는 서브 디렉토리를 스캔합니까?

답변

3

저장소 및 엔터티가 이 maven 종속성으로 주입 되었기 때문에 이런 일이 발생 했습니까?

  • 아니 그것은,

그래서 컴포넌트 스캔의 재귀 부분을 수행하지 않은 서브 패키지 또는 하위 디렉토리를 검색?

  • 예 구성 요소 검사는

이 주석에 의해 스프링 데이터 JPA를 사용하는 반면, 모든 @Component을 가진 클래스 나 @Controller 같은 하위 유형을 검색하기위한 것입니다 여기 @ComponentScan 정교하게하기 위해 서브 패키지로 재귀 적으로 검색 않습니다 PersistenceContext 클래스에 @EnableJpaRepositories 주석을 추가하고 Spring Data JPA가 저장소 인터페이스에 대한 구현을 생성 할 때 검색되는 기본 패키지를 구성한다. 따라서 기본 패키지 정보를 모두 선언 할 필요가 있습니다. @ComponentScan@EnableJpaRepositories