用本地属性覆盖远程 Spring Cloud 属性

Posted

技术标签:

【中文标题】用本地属性覆盖远程 Spring Cloud 属性【英文标题】:Override a remote spring cloud property with a local one 【发布时间】:2022-01-13 00:19:01 【问题描述】:

我有一个 spring boot 应用程序,它通过 spring cloud 从远程配置服务器读取属性,它可以与远程存储库中定义的不同配置文件一起正常工作,我正在使用以下命令运行它:

java -jar my-app.jar --spring.profiles.active=my-custom-profile

但是,在某些特殊情况下,我希望能够在更改某些远程属性的同时运行应用程序(这些更改不是固定的,因此我无法为它们创建一些自定义配置文件),所以我已经试图通过这种方式直接通过命令行覆盖它们:

java -jar my-app.jar --spring.profiles.active=my-custom-profile --my.first.property=value1 --my.second.property=value2

但似乎没有考虑到这一点,因为应用程序在启动时仍然采用远程属性。

有什么合适的方法可以实现吗?

【问题讨论】:

【参考方案1】:

由 Spring Cloud Config 定义的远程属性优先于任何其他属性源。如果你想用本地属性覆盖那些,你需要明确地允许这个,如Overriding the Values of Remote Properties中所述:

spring.cloud.config.allowOverride=true
spring.cloud.config.overrideNone=true

【讨论】:

谢谢,我错过了那部分文档

以上是关于用本地属性覆盖远程 Spring Cloud 属性的主要内容,如果未能解决你的问题,请参考以下文章

Spring Cloud(中文版)

使用环境覆盖 Spring Cloud Config 值

Spring Cloud Config 配置属性覆盖优先级。

Spring Cloud Configuration Server 不使用本地属性文件

Spring Cloud 配置服务器未读取本地 git 存储库中的属性文件

Spring Cloud 配置服务器未加载属性文件