属性覆盖
配置服务器具有“覆盖”功能,允许操作员为所有应用程序提供配置属性。被覆盖的属性无法通过常规的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),将客户端中所有配置覆盖项的优先级调整为更像默认值,从而允许应用程序通过环境变量或系统属性提供自己的值。