springboot外部配置-特定于配置文件的配置

时间:2018-07-05 08:43:00

标签: java spring spring-boot yaml spring-boot-configuration

根据SpringBoot文档,配置顺序为:

  

打包的jar之外的特定于配置文件的应用程序属性(application- {profile} .properties和YAML变体)

     

打包在jar中的特定于配置文件的应用程序属性(application- {profile} .properties和YAML变体)

     

打包的jar之外的应用程序属性(application.properties和YAML变体)。

     

打包在jar中的应用程序属性(application.properties和YAML变体)。

在我的项目中,我有一个名为“ prod”的配置文件和以下文件:

  • application.yml(在jar中)
  • application-prod.yml(在jar中)

我还想使用外部文件覆盖某些属性。由于根据文档,外部application.yml将被内部application-prod.yml覆盖,因此我需要确保将外部文件视为profile specific配置文件。

我尝试使用:

-Dspring.config.location=<my path>/application-prod.yml

我也尝试过:

-Dspring.config.location=file:<my path>/application-prod.yml

在所有情况下,我都从内部 application-prod.yml

获取值

如果我完全删除了内部配置文件,那么我会从外部获取值(所以我知道配置会拾取该文件)。

我了解到,该外部文件被视为与通用application.yml等效,而不是特定于个人资料的文件。

如何将其配置为配置文件特定的外部配置?

1 个答案:

答案 0 :(得分:2)

找到答案:

您需要在外部使用Directory来设置特定于配置文件的配置文件,而不是直接使用该文件,并且该文件必须以/结尾。因此必须是:

-Dspring.profiles.active=prod

-Dspring.config.location=/<some-path>/config/(任何以/结尾的路径)

其中有一个:

application-prod.yml