我希望允许我的一个库的用户指定他们的JPA实体和Spring Data JPA存储库的位置,类似于:
database1:
datasource:
repository-package: com.sample.database1.repositories1,com.sample.database1.repositories2
entity-packages: com.sample.database1.entities1,com.sample.database1.entities2我的库定义:
@Configuration
@EnableJpaRepositories(basePackages = "${database1.datasource.repository-package}",
entityManagerFactoryRef = "database1EntityManagerFactory",
transactionManagerRef = "database1TransactionManager")
static class Database1DataSourceAutoConfiguration {
@Value("${database1.datasource.entity-packages}")
private String[] entityPackages;entityPackages被正确注入,包含一个带有两个实体包的数组。
但是,basePackages = "${database1.datasource.repository-package}"显然不起作用,因为它引用的是字符串"com.sample.database1.repositories1,com.sample.database1.repositories2",而不是具有两个String的数组。
有没有一种方法可以将YML文件中String[]注入注释属性中?如果没有,有什么解决方法吗?
@EnableJpaRepositories(basePackages = { ??? }
发布于 2018-01-29 17:35:25
作为解决方法:
1)使用com.sample.database1为repository-package属性赋值,因为它是以下两个子包的公共包:com.sample.database1.repositories1,com.sample.database1.repositories2。
这就是:
database1:
datasource:
repository-package: com.sample.database12)如果基础包不总是相同的,则采用其他方法。
basePackages属性接受一个数组。因此使用它来提供两个不同的元素:即包的特定属性。
例如:
database1:
datasource:
repository-package-1: com.sample.database1.repositories1
repository-package-2: com.sample.database1.repositories2并使用它:
@Configuration
@EnableJpaRepositories(basePackages =
{"${database1.datasource.repository-package-1}",
"${database1.datasource.repository-package-2}"},
...
)
static class Database1DataSourceAutoConfiguration {https://stackoverflow.com/questions/48497967
复制相似问题