spring-boot - Spring Boot 外部配置覆盖不起作用
问题描述
我的资源文件夹中有一个application.yml
和application-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
从路径末尾删除并只给出文件所在文件夹的路径,它确实有效,但我想指定一个文件,我不希望他拿走目录中的所有内容。
解决方案
这是从 1.x 到 2.x 的行为变化。spring.config.location 覆盖默认值而不是添加到它。我们需要使用 spring.config.additional-location 来保持默认值。因此,如果您想覆盖尝试 spring.config.location 。
推荐阅读
- vba - 偶发错误更新或取消更新而没有添加新或编辑
- javascript - 使用 JavaScript 创建倒计时
- ssh - Puppet r10k:将 deploykey 放入 control-repo
- javascript - 将 JSON 添加到空数组问题
- process - Elixir,如何在单个 Supervisor 的监督下运行多个进程
- c++ - 无法标记字符串并将其传递给 c++ 中的 struct
- java - 使用 XStream 从 XML 中获取对象
- android - 测试导航 - IncompatibleClassChangeError -TestNavHostController 被声明为最终
- javascript - JavaScript 将 arraybuffer 作为音频播放。需要帮助解决“decodeaudiodata无法解码音频数据”
- php - SQLSTATE [HY000]:一般错误:1364 字段 'id' 在 mysql 的 laravel 8 中没有默认值