在Spring框架的包名匹配模式中使用通配符

后端开发 2026-07-09

有多种Spring注解具备包匹配属性。下面是我其中一个测试类中的一些示例:

@EnableJpaRepositories("com.mycompany.repositories")
@EntityScan("com.mycompany.repositories")
@ComponentScan("com.mycompany.repositories")
@DataJpaTest
class RepositoryTests {
    // tests omitted
}

这些将匹配以 com.mycompany.repositories 开头的包,但我希望它们能够匹配以 com.mycompany 开头的任意包,并且包含任意名为 repositories 的子包,这样就会匹配如下所有情况

  • com.mycompany.repositories
  • com.mycompany.repositories.foo
  • com.mycompany.bar.repositories
  • com.mycompany.bar.repositories.baz

根据文档,这些属性支持“Ant风格的包模式”,但我尝试过的模式都无法实现我的目标(例如 com.mycompany.**.repositories)。

解决方案

@Donal,

@EnableJpaRepositories("com.mycompany.\\.repositories") 是错误的。你只能在末尾使用.*.

  1. 最佳解决方案是扫描公共根包:
@EnableJpaRepositories("com.mycompany")
  1. 显式列出包:
@EnableJpaRepositories({
    "com.mycompany.repositories.**",
    "com.mycompany.bar.repositories,
    "com.mycompany.bar.repositories.baz.**"
})
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章