我有spring config server
和spring 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
设置的内容,但事实并非如此。请告诉我这里我做错了什么。
答案 0 :(得分:0)
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)。