【发布时间】:2020-04-26 21:35:51
【问题描述】:
资源文件夹下的属性文件很少。
src/main/java
src/main/resources-
prod
-> application.properties
prod-brand-1
-> application.properties
prod-brand-2
-> application.properties
application-default.properties (directly placed under resources folder)
在我的一个 Java 类中,我正在初始化一个环境 bean,它将使用 @PropertySource 注释加载属性文件。
@Configuration
@PropertySource({"classpath:application-default.properties",
"classpath:prod/application.properties",
"classpath:prod-brand-1/application.properties",
"classpath:prod-brand-2/application.properties"
})
public class PropertyConfig{
//
}
我可以加载 application-default.properties,因为它直接放置在资源文件夹下,但不能加载那些放置在诸如 prod,prod-1,prod- 等目录下的那些2.
在实际场景中,需要将下面的内容替换为一些占位符,并且需要通过环境变量注入其中的值(prod,prod-brand-1,prod-brand-2)。
@PropertySource({"classpath:prod/application.properties" "classpath:prod-brand-1/application.properties" "classpath:prod-brand-2/application.properties"})
应该是这样的:-
@PropertySource({"classpath:{dir}/application.properties"})
请建议我如何将占位符与@PropertySource 一起使用。
【问题讨论】:
-
不要。让 Spring Boot 通过您可以在启动时提供的
spring.config.additional-location属性指定其他位置来加载它们。 -
你怎么知道没有加载附加文件?我有一个类似的问题:stackoverflow.com/questions/59526999/…。附加文件的内容是什么?
-
@hotzst 我确实通过 Junit 测试对其进行了测试,并且由于它不存在而找不到错误文件“prod/application.properties”。当我删除这些 prod/application.properties,prod-brand-1/application.properties 并且只有 @PropertySource({"classpath:application-default.properties"}) 时,它工作正常并且环境中有 application.properties 文件.
-
@M.Deinum 我没有使用 SpringBoot :(
标签: java spring maven properties