寻找在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文件正在加载正常。我正在寻找一种推荐的方法来加载其他配置文件特定的属性文件。我不确定是否有办法从基于个人资料的文件夹中加载所有属性文件?
答案 0 :(得分:5)
内置配置侦听器具有很大的灵活性。例如。您可以设置spring.config.name=application,ldap,quartz,etc
和spring.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加载配置如何this和this。
我希望它有所帮助。
答案 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文件