Spring 引导:从文件系统加载配置文件特定 application.properties
Spring boot : load profile specific application.properties from file system
我正在尝试根据当前活动配置文件加载外部属性文件
我定义的属性文件如下:
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
[=17 中定义的默认值=]
@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 documentation 中。
并删除您的自定义 PropertySourcesPlaceholderConfigurer
,因为不需要。
您还可以对 属性 资源使用 java 注释,并使用服务器环境(活动配置文件)来识别要加载的属性文件。
就像这里的代码片段,它将查找 属性 'envTarget',如果找不到或为空,它将使用默认值 'qa':
@PropertySource({
"classpath:application-${envTarget:qa}.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
[=17 中定义的默认值=]
@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 documentation 中。
并删除您的自定义 PropertySourcesPlaceholderConfigurer
,因为不需要。
您还可以对 属性 资源使用 java 注释,并使用服务器环境(活动配置文件)来识别要加载的属性文件。
就像这里的代码片段,它将查找 属性 'envTarget',如果找不到或为空,它将使用默认值 'qa':
@PropertySource({
"classpath:application-${envTarget:qa}.properties"
})