Как динамически изменить конфигурационный сервер URI в среде ОС
У меня есть spring config server
а также spring config client
, В клиенте я установил spring.cloud.config.uri
в http://localhost:8888
но я хочу изменить его на другое URI сказать http://example.com:8888
в Windows, используя среду ОС с setx
, так я побежал
setx spring.cloud.config.uri "http://example.com:8888"
но когда я бегу spring config client
он все еще пытается прочитать с localhost
, По этой ссылке моя spring.cloud.config.uri
в bootstrap.yml
должно быть переопределено тем, что я установил с OS environment
но это не так. Пожалуйста, дайте мне знать, что я делаю не так здесь.
1 ответ
Setx
setx
добавляет переменную, но не делает ее доступной в текущей оболочке ( как описано здесь):
setx постоянно изменяет значение, которое влияет на все будущие оболочки, но не изменяет среду уже работающих оболочек. Вы должны выйти из оболочки и открыть ее до того, как изменения станут доступны, но значение останется неизменным, пока вы не измените его снова.
Просто убедитесь, что вы работаете из недавно открытого окна оболочки.
Я предлагаю вам использовать 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).