Property Overrides

配置服务器有一个“overrides”功能,允许操作员向所有应用程序提供配置属性。应用程序不能通过正常的 Spring Boot 挂钩意外更改被覆盖的属性。若要声明覆盖项,请向 spring.cloud.config.server.overrides 添加一个键值对映射,如下例所示:

spring:
  cloud:
    config:
      server:
        overrides:
          foo: bar

前面的示例导致所有作为配置客户端的应用程序都将读取 foo=bar,而与它们自己的配置无关。

配置系统无法强制应用程序以任何特定方式使用配置数据。因此,并不强制执行覆盖。但是,它们确实为 Spring Cloud Config 客户端提供了有用的默认行为。

通常情况下,带 ${} 的 Spring 环境占位符可以通过使用反斜杠 (\) 转义 ${ 进行转义(并在客户端进行解析)。例如,\${app.foo:bar} 解析为 bar,除非应用程序提供其自己的 app.foo

在 YAML 中,您不需要转义反斜杠本身。但是,在属性文件中,当您在服务器上配置覆盖时,您确实需要转义反斜杠。

通过在远程仓库中设置 spring.cloud.config.overrideNone=true 标志(默认值为 false),可以更改客户端中所有覆盖的优先级,使其更接近默认值,允许应用程序在环境变量或系统属性中提供自己的值。