首页 > 解决方案 > 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;
}

标签: springspring-bootproperties-file

解决方案


首先指定要加载的配置文件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,因为这不是必需的。


推荐阅读