java - 在 Spring Boot 2.4 中使用我的配置文件 dev 覆盖属性
问题描述
我试图超越财产
kafka.servers=s101lbakafpep1:9092,s102lbakafpep2:9092,s101lbakafpep3:9092
在我的src/main/resources/config/application-kafka.properties文件中定义
有了这个值
kafka.servers=localhost:9092
在我的src/main/resources/application-dev.properties文件中定义
我尝试了所有可能的组合,阅读 spring boot doc 在我的 application.properties 中更改的顺序
spring.profiles.active=config,health,planete,dgfip,mapping,kafka,dev
spring.profiles.active=dev,config,health,planete,dgfip,mapping,kafka
将 spring.config.use-legacy-processing 用于 true 或 false 或 .include,始终是 kafka 配置获胜
自从我将 Spring Boot 版本更改为 2.4 后,它不起作用
解决方案
感谢@gviczai 非常有用的提示,解决了我从 YAML 文件加载和覆盖配置的问题。我完全错过了文档中的以下句子,这使我的单元测试失败,因为值没有像 Spring Boot 2.3 那样被覆盖。
可以将导入视为插入到声明它们的文档下方的附加文档。它们遵循与常规多文档文件相同的自上而下的顺序:一个导入只会被导入一次,无论它被声明多少次。
因此,如果您想覆盖导入的值,则必须在导入后启动一个新文档(--- 在 yaml 中,#--- 在属性中)。
# imported-config.yaml
my-key: my-value
# application.yaml
spring:
config:
import:
- classpath:imported-config.yaml
# before starting a new document the value can not be modified, it would still be "my-value"
my-key: here-overriding-does-not-work
---
# after the start of the new document the value can be modified
my-key: my-overridden-value
推荐阅读
- c++ - gcc 忽略要链接的明确指定的链接库
- typescript - Observable 没有调用签名
- c# - 如何在web api C#中上传带有实体类的图像
- excel - Excel Power Query M语言中的条件最大值?
- java - 如何对值求和 Java Hashmap
- c# - C# 中的 LINQ to SQL 查询
- php - 没有检测到 symfony 项目的 PHP 二进制文件
- hangout - 是否可以为 Google Hangouts 创建一个“send-message-to(..)”网址?
- javascript - 清空定时器时运行SetTimeout的内容
- c# - 在将行从一个数据网格复制到另一个数据网格之前检查重复项