9

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

-resources
   -- application.properties
       -- dev
             -- application-dev.properties
             -- ldap-dev.properties
             --quartz-dev.properties
             -- etc-dev.properties
     -- test
             -- 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

4 回答 4

6

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

于 2014-11-19T18:18:15.703 回答
4

从 Spring boot 2.0.4 开始,只要您在spring.config.name环境变量中指定配置文件,此功能即可开箱即用,例如spring.config.name=application,ldap,quartz

于 2019-04-18T08:14:22.987 回答
3

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

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

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

要更好地了解 Spring 如何从不同的源和配置文件加载配置,请参阅thisthis

我希望它有所帮助。

于 2014-11-19T09:31:03.373 回答
0

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

但是如果你使用的是 YAML,那就不行了@PropertySource。您必须使用@ConfigurationProperty加载除 application.yml 以外的 YML 文件

于 2018-12-07T11:16:24.570 回答