gpt4 book ai didi

java - Spring Cloud Config Server 环境变量的优先级

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:19:26 27 4
gpt4 key购买 nike

我对使用 spring cloud config server 时环境变量的优先级有疑问

在我的服务中,我有一个包含此内容的本地属性文件 application.yml

foo:
bar: "some"
buz: "some"
joe: "some"

该服务还连接到配置服务器,配置存储库包含文件 testservice-api.yml(其中 testservice-api 是 spring 应用程序名称服务)。该文件的内容是:

foo:
bar: "some-specific"

因此,使用此设置,运行时的配置将导致:

{
"foo.bar": "some-specific",
"foo.buz": "some",
"foo.joe": "some"
}

现在我尝试用环境变量覆盖 foo.barfoo.joe

所以我用这个命令启动服务:

FOO_BAR=some-env FOO_JOE=some-env gradle bootRun

根据我在 this part of the spring boot documentation 中阅读的内容环境变量应该优先于配置文件——spring cloud config 文档也没有说明什么不同——所以我希望结果是:

{
"foo.bar": "some-env",
"foo.buz": "some",
"foo.joe": "some-env"
}

但我得到的是:

{
"foo.bar": "some-specific",
"foo.buz": "some",
"foo.joe": "some-env"
}

因此只有来自 jar 中的本地配置文件的配置被环境变量覆盖 - 来自 config repo 的属性似乎优先于环境变量。

这是可以解释的吗?或者这是一个错误?这里面有什么提示吗?

请在此处找到示例代码:

https://github.com/mduesterhoeft/configserver-test

存储库中的自述文件将此处描述的问题列为 Use Case 3

最佳答案

在 git repo 中定义以下属性(作为配置服务器的来源)[对于给定的配置文件]:
spring.cloud.config:
覆盖系统属性:假
覆盖无:真

请记住 bootsrap.yml 中的属性(尤其是 overrideSystemProperties 和 overrideNone)默认情况下会被 config-server 中的属性覆盖

关于java - Spring Cloud Config Server 环境变量的优先级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37316835/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com