spring - Spring boot:从文件系统加载配置文件特定的 application.properties
问题描述
我正在尝试根据当前活动配置文件加载外部属性文件
以及我定义的属性文件如下:
default -> resources/config/application.properties (for dev)
qa -> c:\external-configuration\config\application-qa.properties
prod -> c:\external-configuration\config\application-prod.properties
spring 如何配置为application*.properties
从不同来源读取所有这些?
我试图定义PropertySourcesPlaceholderConfigurer
如下,但spring可以根据活动配置文件解析属性值,我总是得到定义的默认值application.properties
@Bean
public PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
PropertySourcesPlaceholderConfigurer properties = new PropertySourcesPlaceholderConfigurer();
properties.setLocation(new FileSystemResource("c:\external-configuration\config\application-qa.properties"),new FileSystemResource("c:\external-configuration\config\application-prod.properties"));
properties.setIgnoreResourceNotFound(false);
return properties;
}
解决方案
首先指定要加载的配置文件spring.profiles.active
。其次,由于它不是默认位置之一,因此添加spring.config.additional-location
以添加要扫描的其他位置。所以当你开始你的线应该看起来像
java -jar <your-jar>.jar --spring.profiles.active=prod --spring.config.additional-location=file:C:/external-configuration/config/
这也记录在Spring Boot 文档中。
并删除您的自定义PropertySourcesPlaceholderConfigurer
,因为这不是必需的。
推荐阅读
- sql - 是否可以选择一个结果集从批处理执行中返回?
- r - 对R中的二维因子感到困惑
- android - 使用“运行”按钮时在调试版本上安装 INSTALL_PARSE_FAILED_NO_CERTIFICATES
- isabelle - 在 Isabelle 中探索 ML 文件
- android - 将 gradle 从 3.4 升级到 3.5 在生成的 DataBindingClasses 中抛出“错误:找不到符号类”和“错误:包 ... 不存在”
- azure-devops - 如何管理 Azure Devops 扩展的权限
- weka - How to remove 4000 instance in WEKA evenly spread across class attribute?
- r - 根据先前的历史创建一个新变量
- java - Android:如何从代码中禁用所有第三方应用程序通知的声音?
- python - 在 for 循环中解压缩列表列表