如何使用 OS 环境动态更改配置服务器 uri

how to change config server uri dynamically using OS environment

我有一个 spring config serverspring config client。在客户端中,我已将 spring.cloud.config.uri 设置为 http://localhost:8888,但我想将其更改为其他一些 uri,例如 windows 中的 http://example.com:8888 使用 OS 环境和 setx.所以我运行

setx spring.cloud.config.uri "http://example.com:8888" 

但是当我 运行 我的 spring config client 它仍在尝试从 localhost 读取。根据 this link 我在 bootstrap.yml 中的 spring.cloud.config.uri 应该被我用 OS environment 设置的内容覆盖,但它没有。请让我知道我在这里做错了什么。

setx

setx 添加变量但在当前 shell (as explained here):

中不可用

setx modifies the value permenantly, which affects all future shells, but does not modify the environment of the shells already running. You have to exit the shell and reopen it before the change will be available, but the value will remain modified until you change it again.

只需确保您是从新打开的 shell window 运行的。

我建议你使用 set spring.cloud.config.uri=http://example.com:8888 只是为了测试。

检查环境变量是否存在

您可以将以下内容添加为您的 main 方法的第一行:

System.out.println(System.getenv("spring.cloud.config.uri"));
System.out.println(System.getenv("SPRING_CLOUD_CONFIG_URI"));

带下划线的变量名

Windows支持带点的环境变量,应该没问题。几乎所有其他 OS 情况并非如此。正如您所知,spring 支持带有 下划线 的变量名称(如您提供的 link 中所述):

If you use environment variables rather than system properties, most operating systems disallow period-separated key names, but you can use underscores instead (e.g. SPRING_CONFIG_NAME instead of spring.config.name).