2016-06-20 179 views
2

我遇到了一个奇怪的问题。我认为,如果为扫描指定了顶层包,组件扫描会递归扫描子包。组件扫描不扫描子包

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

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

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

回答

3

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

  • 不,它不是

所以确实组件扫描的递归部分,扫描子包 或子目录?

  • 是组件扫描并进行递归搜索子包

要细说了@ComponentScan旨在以搜索@Component或全部类别及其子类型,如@Controller而通过注释的,以使春数据JPA使用@EnableJpaRepositories批注的PersistenceContext类,并配置Spring Data JPA为存储库接口创建实现时扫描的基本包。因此需要声明@ComponentScan@EnableJpaRepositories

的基本包信息