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

时间:2016-10-28 20:57:58

标签: spring-boot environment-variables spring-cloud-config setx

我有spring config serverspring config client。在客户端中,我已将spring.cloud.config.uri设置为http://localhost:8888,但我想将其更改为使用具有http://example.com:8888的操作系统环境的Windows中的其他uri说setx。所以我跑了

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

但是当我运行spring config client时,它仍在尝试从localhost读取。根据{{​​3}}链接,spring.cloud.config.uri中的bootstrap.yml应该覆盖我使用OS environment设置的内容,但事实并非如此。请告诉我这里我做错了什么。

1 个答案:

答案 0 :(得分:0)

SETX

setx添加变量,但不会使其在当前shell(as explained here)中可用:

  

setx永久修改值,影响所有未来的shell,   但不会修改已运行的shell的环境。您   必须退出shell并在更改之前重新打开它   可用,但在更改之前,该值将保持修改状态   试。

确保从新打开的shell窗口运行。

我建议你仅仅为了测试而使用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支持带点的环境变量,所以它应该没问题。几乎所有其他操作系统都不是这种情况。您知道,spring支持使用下划线的变量名称(如您提供的链接中所述):

  

如果使用环境变量而不是系统属性,则大多数情况   操作系统不允许使用句点分隔的键名,但您可以使用   改为强调(例如SPRING_CONFIG_NAME而不是   spring.config.name)。