【发布时间】:2019-10-10 18:59:18
【问题描述】:
我有一个带有最新 SpringBoot v.2.1.9 的应用程序。该项目包含多个自定义文件,其模式如下:
- file1-dev.properties
- file1-prod.properties
- file2-dev.properties
- file2-prod.properties 等
我想达到与 Spring 的 application-{profile}.properties 类似的行为,我的意思是从文件中加载每个自定义道具,它与活动配置文件匹配。由于大量属性,我无法将它们存储在 application-{profile}.properties 中,因为它会导致可读性问题。
我想找到一个严格的 Java 解决方案,没有任何 Maven 的解决方法,即在构建后物理替换文件。 你能告诉我我怎样才能达到这种方法吗?
我目前的假设是覆盖 ApplicationContextInitializer 中的初始化方法,然后检查配置文件并执行逻辑以选择文件,但我不确定这是否是最有效的方法。
非常感谢您的帮助。
@Override
public void initialize(ConfigurableApplicationContext applicationContext) {
String profile = System.getProperty("spring.profiles.active");
//selecting files according to active profile
applicationContext.getEnvironment().getPropertySources().addLast(prop);
}
【问题讨论】:
-
如果文件的名称与模式匹配,您可以只过滤文件。
标签: java spring-boot spring-profiles spring-properties