zho*_*zhe 3 spring-data spring-data-jpa
我有一个带@EnableJpaRepositories注释的jpa配置文件.我从application.properties文件中设置了这个注释值,如下所示:
@EnableJpaRepositories("${jpa.repository.packages}")
public class JPAConfiguration {
....
}
Run Code Online (Sandbox Code Playgroud)
这是我的application.properties文件:
jpa.repository.packages=com.epms.model
Run Code Online (Sandbox Code Playgroud)
它完美无缺.但我想为@EnableJpaRepositories指定多个包.所以我将配置文件更改为:
jpa.repository.packages=com.epms.model,com.ecms.model
Run Code Online (Sandbox Code Playgroud)
以及配置文件:
@EnableJpaRepositories("#{'${jpa.repository.packages}'.split(',')}")
public class JPAConfiguration {
}
Run Code Online (Sandbox Code Playgroud)
但它不起作用.任何的想法 ?我怎么能在我的配置文件中这样做?
正如@amicoderozer所问,如果你的类共享一个公共基本包,你只需要指出root包.
如果不是你的情况(尽管你是从配置文件加载或者手动声明它们)可能问题(将帮助发布任何异常或运行时跟踪)是split方法的使用方式.它返回一个数组,我想生成的代码将是这样的:
@EnableJpaRepositories("jpa.repository.packages1","jpa.repository.packages2")
Run Code Online (Sandbox Code Playgroud)
该代码无法编译.
从来没有在组件的注释中尝试过Spring EL,但是尽管如此,也许你应该用这种方式指出basePackages:
@EnableJpaRepositories(basePackages = "#{'${jpa.repository.packages}'.split(',')}")
Run Code Online (Sandbox Code Playgroud)
如果不起作用,我建议您首先通过手动数组声明进行测试:
@EnableJpaRepositories(basePackages = { "com.epms.model","com.ecms.model" })
Run Code Online (Sandbox Code Playgroud)
确保所有工作都按预期工作,然后再次尝试从配置文件中读取和解析.
更新:
经过一些阅读后,我得出结论认为不可能做你想做的事.将SpEL被允许在许多地方,但对于标注有唯一文档,并与工作实例@Value诠释.
| 归档时间: |
|
| 查看次数: |
3589 次 |
| 最近记录: |