【问题标题】:Component Scan not scanning sub packages组件扫描不扫描子包
【发布时间】:2016-10-21 07:25:38
【问题描述】:

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

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

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

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

【问题讨论】:

  • 仅供参考,我特别提到要在 @EnableJpaRepositories 注释中扫描的包

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


【解决方案1】:

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

  • 不,不是

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

  • 是的,组件扫描确实在子包中递归搜索

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多