Я загружаю свое приложение springboot, чтобы указать на сервер конфигурации по умолчанию для получения реквизитов конфигурации при запуске, сервер конфигурации изменяет spring.cloud.config.uri (не спрашивайте меня, почему: D), чтобы указать на другой сервер конфигурации ... когда я вызываю Конечная точка /actuator/refresh Я хочу иметь возможность переключить uri сервера конфигурации на новый, который я только что получил.
Я посмотрел на исходный код весеннее облако-конфигурация, но бины там, похоже, не помечены @RefreshScope.
Springboot env /actuator/env, похоже, показывает новый полученный uri, но клиентские компоненты конфигурации по-прежнему указывают на uri начальной загрузки.
Любые предложения о том, как этого добиться? Я новичок в использовании Springboot.
Спасибо!
Спасибо за предложение, пока не могу использовать Service Discovery, ищу что-то без обнаружения сервиса.




Для всех, кто пытается сделать то же самое, я удалил конфигурацию облака Spring из первоначального запуска и добавил ее по мере необходимости, выполнив setConfigUri, а затем refreshObjects, и, похоже, он получает конфигурацию с сервера конфигурации. (Не забудьте добавить spring-cloud-config и зависимости в pom.xml)
Вот что я сделал, и, похоже, до сих пор это служит цели. Не стесняйтесь звонить, если что-то кажется неправильным.
@Autowired
private ConfigurableEnvironment env;
@Autowired
private ConfigurableApplicationContext applicationContext;
@Autowired
private ContextRefresher refresher;
public void setConfigUri(String uri) throws Exception {
MutablePropertySources propertySources = env.getPropertySources();
Map<String, Object> map = new HashMap<>();
map.put("spring.cloud.config.uri", uri);
propertySources.addFirst(new MapPropertySource("defaultProperties", map));
applicationContext.setEnvironment(env);
}
public void refreshObjects() throws Exception {
refresher.refresh();
}
Вместо того, чтобы публиковать сообщения самому себе, автоматически подключите объект ContextRefresher и вызовите refresh().
Спасибо, не знал, если это. Я добавил его и, похоже, работает, как ожидалось! - К.К.
Вы можете изменить среду Spring, разместив сообщение на /env
ой, никогда не думал об этом! вероятно, лучший способ сделать это. Спасибо!
Использование Service Discovery для поиска на сервере конфигурации, вероятно, самое близкое, что я могу придумать, cloud.spring.io/spring-cloud-static/Finchley.SR1/single/…