我遇到了一个奇怪的问题。我的印象是,如果为扫描指定了顶级包,则组件扫描会递归扫描子包。
我的存储库和实体是项目的maven依赖项。它们位于包名com.foo.bar.xyz下,我的应用程序配置在包com.foo.bar下。当我写@ComponentScan(basePackages = "com.foo.bar")
时,与@EnableJpaRepositories
一起,它会出现找不到存储库bean的错误。
但是,当我指定一个顶级存储库包(如@EnableJpaRepositories(basePackages = com.foo.bar.xyz)
)以及上面的组件扫描时,它会检测到存储库就好了。
现在发生这种情况只是因为存储库和实体被注入maven依赖项?组件扫描的递归部分也是如此,扫描子包或子目录?
答案 0 :(得分:8)
现在发生这种情况只是因为存储库和实体是 被注入为maven依赖?
组件扫描的递归部分也是如此,扫描子包 还是子目录?
这里详细说明@ComponentScan
旨在搜索具有@Component
或其子类型(如@Controller
)的所有类,而通过使用{{1}注释PersistenceContext类来启用Spring Data JPA注释并配置Spring Data JPA为存储库接口创建实现时扫描的基础包。因此需要声明@EnableJpaRepositories
和@ComponentScan