首页 > 解决方案 > Spring Boot 外部配置覆盖不起作用

问题描述

我的资源文件夹中有一个application.ymlapplication-qa.yml。我有一个外部application-qa.yml. 我希望外部的属性application-qa.yml覆盖默认application.yml和内部 的匹配属性application-qa.yml,我不想覆盖整个文件。

我添加了这个 VM 选项(在 Intellij 中):-Dspring.config.additional-location=file:{absolute/path/to/external/ending/with/application-qa.yml}

我也有 env 变量(也在 Intellij 中):spring.profiles.active=qa

由于某种原因,覆盖不起作用,我从内部application-qa.yml而不是外部获取值。

尝试将外部文件命名为application.yml,没有用。

更新:

如果我application-qa.yml从路径末尾删除并只给出文件所在文件夹的路径,它确实有效,但我想指定一个文件,我不希望他拿走目录中的所有内容。

标签: spring-boot

解决方案


这是从 1.x 到 2.x 的行为变化。spring.config.location 覆盖默认值而不是添加到它。我们需要使用 spring.config.additional-location 来保持默认值。因此,如果您想覆盖尝试 spring.config.location 。


推荐阅读