Spring Boot - 每个配置文件的多个属性文件

时间:2014-11-18 20:51:42

标签: spring spring-boot spring-profiles

寻找在Springboot应用程序中配置多个Profile特定属性文件的最佳方法。以下是一个例子:

-resources
- application.properties
- dev
- application-dev.properties
- ldap-dev.properties
- quartz-dev.properties
- etc-dev.properties
- 测试
- application-test.properties
- ldap-test.properties
- quartz-test.properties
- etc-test.properties
- prod
- application-prod.properties
- ldap-prod.properties
- quartz-prod.properties
- etc-prod.properties

application.properties和application-profile.properties文件正在加载正常。我正在寻找一种推荐的方法来加载其他配置文件特定的属性文件。我不确定是否有办法从基于个人资料的文件夹中加载所有属性文件?

4 个答案:

答案 0 :(得分:5)

内置配置侦听器具有很大的灵活性。例如。您可以设置spring.config.name=application,ldap,quartz,etcspring.config.location=classpath:/,classpath:/dev,classpath:/prod,classpath:/test。或等效的env vars。 Selim的回答中的链接记录了基本行为和配置选项。

答案 1 :(得分:2)

我不确定是否有更好的方法,或者我的建议确实有效,但你可以试试这个:

在配置类之前添加@PropertySource注释

@PropertySource("classpath:ldap-${spring.profiles.active}.properties", "classpath:quartz-${spring.profiles.active}.properties", "classpath:etc-${spring.profiles.active}.properties")

要更好地了解来自不同来源和配置文件的Spring加载配置如何thisthis

我希望它有所帮助。

答案 2 :(得分:1)

从Spring boot 2.0.4开始,只要您在spring.config.name环境变量(例如spring.config.name=application,ldap,quartz

)中指定配置文件,此功能即开即用

答案 3 :(得分:0)

@PropertySources可用于加载配置文件为     ldap-${spring.profiles.active}.properties

但是,如果您使用的是YAML,则@PropertySource将不起作用。您必须使用@ConfigurationProperty来加载application.yml以外的YML文件