【发布时间】:2017-07-20 08:50:15
【问题描述】:
我们的项目包含三个资源文件 - application-dev.properties application-test.properties 和 application-prod.properties。我们有一个环境变量来设置我们所在环境的名称,然后我们使用计算占位符加载正确的属性文件,如下所示:
@Configuration
@PropertySource("classpath:application-${environment}.properties")
public class ApplicationConfiguration {
}
我希望添加一个新文件application-defaults.properties,它将具有所有默认属性,并且只有出现在application-${environment}.properties 中的属性才会被特定环境属性覆盖。我尝试这样做:
@Configuration
@PropertySource({"classpath:application-defaults.properties", "classpath:application-${environment}.properties"})
public class ApplicationConfiguration {
}
事情是,默认文件中的属性总是“赢”并优先,而我希望它们被覆盖,以防属性出现在指定的环境变量中。我尝试在它们之间切换顺序,但它仍然保持不变。我什至尝试将默认文件的名称更改为 default.properties 只是为了了解加载顺序是字典顺序还是类似的东西,但仍然 - default.properties 总是赢。
注意:为了加载我们使用 spring-boot 的应用程序。
【问题讨论】:
-
您确定属性
${environment}在加载时已正确解析?
标签: spring properties