我们有一个包含三个资源文件的项目 -application-dev.properties application-test.properties和application-prod.properties. 我们有一个环境变量,用于设置我们所在环境的名称,然后我们使用计算占位符加载正确的属性文件,如下所示:
@Configuration
@PropertySource("classpath:application-${environment}.properties")
public class ApplicationConfiguration {
}
Run Code Online (Sandbox Code Playgroud)
我希望添加一个新文件application-defaults.properties,该文件将具有所有默认属性,并且只有出现在其中的属性application-${environment}.properties才会被特定环境属性覆盖。我尝试这样做:
@Configuration
@PropertySource({"classpath:application-defaults.properties", "classpath:application-${environment}.properties"})
public class ApplicationConfiguration {
}
Run Code Online (Sandbox Code Playgroud)
事实是,默认文件中的属性总是“获胜”并优先,而我希望它们被覆盖,以防属性出现在指定的环境变量中。我尝试在它们之间切换顺序,但它仍然保持不变。我什至试图将默认文件的名称更改为default.properties只是为了了解加载顺序是按字典顺序还是类似的顺序,但仍然 -default.properties总是获胜。
注意:为了加载应用程序,我们使用 spring-boot。
如果您想要多级分层配置文件,您可以使用 spring.profiles.include 属性。
第一级中的每个配置文件都从 application.properties 扩展属性,在第二级中,您可以在第一行中设置 spring.profiles.include 以从第一级扩展。
例如:
默认配置文件:
一级简介:
二级简介:
| 归档时间: |
|
| 查看次数: |
3470 次 |
| 最近记录: |