3

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

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

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

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

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

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

  • application.yml(在罐子里)
  • application-prod.yml(在罐子里)

而且我还想使用外部文件覆盖一些属性。由于根据文档, externalapplication.yml将被 internal 覆盖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而不是特定于配置文件。

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

4

1 回答 1

3

找到了答案:

您需要在Directory外部使用 a 来设置配置文件特定的配置文件,而不是直接使用该文件,它需要以/. 所以它必须是:

-Dspring.profiles.active=prod

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

里面有一个:

application-prod.yml

于 2018-07-05T13:16:23.827 回答