在Spring框架的包名匹配模式中使用通配符
有多种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") 是错误的。你只能在末尾使用.*.
- 最佳解决方案是扫描公共根包:
@EnableJpaRepositories("com.mycompany")
- 显式列出包:
@EnableJpaRepositories({
"com.mycompany.repositories.**",
"com.mycompany.bar.repositories,
"com.mycompany.bar.repositories.baz.**"
})
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。