如何从属性文件设置字符串数组到@EnableJpaRepositories

7rtdyuoh  于 2023-04-21  发布在  Spring
关注(0)|答案(2)|浏览(129)

我有一个带有@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 {
}

但它不工作.任何想法?我怎么能这样做在我的配置文件?

cedebl8k

cedebl8k1#

正如@amicoderozer所问的,如果你的类共享一个公共的基本包,你只需要指出那个根包。
如果不是你的情况(尽管你是从配置文件加载的或者你是手动声明的),也许问题(* 将有助于发布任何异常或运行时跟踪 *)是split方法的使用方式。它返回一个数组,我猜生成的代码将是这样的:

@EnableJpaRepositories("jpa.repository.packages1","jpa.repository.packages2")

这段代码无法编译。
从来没有在组件的annotation中尝试过Spring EL,但尽管如此,也许你应该这样指示basePackages:

@EnableJpaRepositories(basePackages = "#{'${jpa.repository.packages}'.split(',')}")

如果不起作用,我建议你首先通过手动数组声明来测试它:

@EnableJpaRepositories(basePackages = { "com.epms.model","com.ecms.model" })

请确保所有工作都如您所期望的那样,然后再次尝试从配置文件阅读和解析。

**更新:**经过一些阅读,我得出结论,这是不可能的做你想要的。SpEL是允许的in many places,但对于注解,只有文档和工作示例与@Value注解。

eqoofvh9

eqoofvh92#

以下工程:

@EnableJpaRepositories(basePackages = {"com.company.machine.repository", "com.company.system.repository"})
@EnableMongoRepositories(basePackages = {"com.company.system.repository", "com.company.machine.repository"})

相关问题