Как динамически изменить конфигурационный сервер 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).

Другие вопросы по тегам