我知道实施远程配置管理系统(特别是Spring Cloud配置服务器)的优势。摘自Spring Microservices in Action书,第2章:
启动微服务时,任何特定于环境的信息或应用程序配置信息数据都应为
- 作为环境变量传递到启动服务
- 从集中式配置管理存储库中读取
据我了解,当您使用Config First Bootstrap方法时,任何其他微服务中唯一应配置的部分与配置服务器有关(例如,在{{1}中指定spring.application.name
},并将bootstrap.yml
和spring.cloud.config.uri
作为环境变量传递。完全不需要spring.profiles.active
。
因此,看到有人问(here,here和here)如何在本地覆盖远程配置并阅读此Overriding the Values of Remote Properties后,我有些困惑Spring Cloud文档中的部分:
由引导上下文添加到您的应用程序的属性源通常是“远程”的(例如从Config Server),默认情况下,除非在命令行上,否则它们不能在本地被覆盖。如果要允许您的应用程序使用其自己的系统属性或配置文件覆盖远程属性,则远程属性源必须通过设置
application.yml
来授予其权限(在本地设置无效)。 (...)
Spring Cloud中是否存在有效的案例来设置部分本地配置甚至覆盖远程配置?
答案 0 :(得分:1)
您可以引用此https://github.com/spring-cloud/spring-cloud-config/issues/359
,正如作者所说:应用程序无法自行决定可以覆盖远程源中的配置
因此,您无法在本地设置spring.cloud.config.allowOverride=true
。
您可以检查PropertySourceBootstrapProperties.java
的源代码。
有三个参数可以控制配置。
如果要覆盖远程配置,只需在远程 git config中设置spring.cloud.config.overrideNone=true
。