Spring 组件扫描不扫描子包
我遇到了一个奇怪的问题。我的印象是,如果指定扫描顶级包,组件扫描将递归扫描子包 我的存储库和实体是项目的maven依赖项。它们位于包名com.foo.bar.xyz下,而我的应用程序配置位于包com.foo.bar下。当我编写Spring 组件扫描不扫描子包,spring,maven,spring-data-jpa,component-scan,Spring,Maven,Spring Data Jpa,Component Scan,我遇到了一个奇怪的问题。我的印象是,如果指定扫描顶级包,组件扫描将递归扫描子包 我的存储库和实体是项目的maven依赖项。它们位于包名com.foo.bar.xyz下,而我的应用程序配置位于包com.foo.bar下。当我编写@ComponentScan(basePackages=“com.foo.bar”)以及@EnableJpaRepositories时,它给出了一个找不到存储库bean的错误 但是,当我指定一个顶级存储库包,如@EnableJpaRepositories(basePacka
@ComponentScan(basePackages=“com.foo.bar”)
以及@EnableJpaRepositories
时,它给出了一个找不到存储库bean的错误
但是,当我指定一个顶级存储库包,如@EnableJpaRepositories(basePackages=com.foo.bar.xyz)
,以及如上所述的组件扫描时,它可以很好地检测到存储库
现在发生这种情况仅仅是因为存储库和实体被作为maven依赖项注入?那么组件的递归部分是扫描子包还是子目录呢
现在发生这种情况仅仅是因为存储库和实体
作为maven依赖注入
- 不,不是
- 是组件扫描在子包中进行递归搜索
此处详细说明
@ComponentScan
旨在搜索具有@Component
或其子类型(如@Controller
)的所有类,而通过使用@enableJPareposities
注释注释PersistenceContext类来启用Spring数据JPA,并配置扫描的基本包当SpringDataJPA为存储库接口创建实现时。因此,需要声明@ComponentScan
和@EnableJpaRepositories
的基本包信息供参考,我特别提到了@EnableJpaRepositories
注释中要扫描的包