组件扫描不扫描子包

时间:2016-06-20 06:22:23

标签: spring maven spring-data-jpa component-scan

我遇到了一个奇怪的问题。我的印象是,如果为扫描指定了顶级包,则组件扫描会递归扫描子包。

我的存储库和实体是项目的maven依赖项。它们位于包名com.foo.bar.xyz下,我的应用程序配置在包com.foo.bar下。当我写@ComponentScan(basePackages = "com.foo.bar")时,与@EnableJpaRepositories一起,它会出现找不到存储库bean的错误。

但是,当我指定一个顶级存储库包(如@EnableJpaRepositories(basePackages = com.foo.bar.xyz))以及上面的组件扫描时,它会检测到存储库就好了。

现在发生这种情况只是因为存储库和实体被注入maven依赖项?组件扫描的递归部分也是如此,扫描子包或子目录?

1 个答案:

答案 0 :(得分:8)

  

现在发生这种情况只是因为存储库和实体是   被注入为maven依赖?

  • 不,不是
  

组件扫描的递归部分也是如此,扫描子包   还是子目录?

  • 是组件扫描会在子包中递归搜索

这里详细说明@ComponentScan旨在搜索具有@Component或其子类型(如@Controller)的所有类,而通过使用{{1}注释PersistenceContext类来启用Spring Data JPA注释并配置Spring Data JPA为存储库接口创建实现时扫描的基础包。因此需要声明@EnableJpaRepositories@ComponentScan

的基本包信息