我有一个带有@EnableJpaRepositories
注释的jpa配置文件。我从application.properties
文件中设置了这个注释值,如下所示:
@EnableJpaRepositories("${jpa.repository.packages}")
public class JPAConfiguration {
....
}
这是我的application.properties文件:
jpa.repository.packages=com.epms.model
它完美无缺。但我想为@EnableJpaRepositories指定多个包。所以我将配置文件更改为:
jpa.repository.packages=com.epms.model,com.ecms.model
以及配置文件:
@EnableJpaRepositories("#{'${jpa.repository.packages}'.split(',')}")
public class JPAConfiguration {
}
但它不起作用。任何的想法 ?我怎么能在配置文件中执行此操作?
答案 0 :(得分:5)
正如@amicoderozer所问,如果你的类共享一个公共基本包,你只需要指明root包。
如果不是你的情况(尽管你是从配置文件加载或手动声明它们)可能问题(将帮助发布任何异常或运行时跟踪)是使用split
方法的方式。它返回一个数组,我想生成的代码将是这样的:
@EnableJpaRepositories("jpa.repository.packages1","jpa.repository.packages2")
该代码无法编译。
从来没有在组件的注释中尝试过Spring EL,但是尽管如此,也许你应该这样指出basePackages:
@EnableJpaRepositories(basePackages = "#{'${jpa.repository.packages}'.split(',')}")
如果不起作用,我建议您首先通过手动数组声明对其进行测试:
@EnableJpaRepositories(basePackages = { "com.epms.model","com.ecms.model" })
确保一切正常,然后再尝试从配置文件中读取和解析。
<强>更新强>
经过一些阅读后,我得出结论认为不可能做你想做的事。允许使用SpEL
in many places但是对于注释,只有@Value
注释的文档和工作示例。