启动后更改Spring Cloud Config服务器uri

时间:2018-08-06 18:04:23

标签: java spring spring-boot spring-cloud

我引导我的springboot应用程序指向默认配置服务器以在启动时获取配置道具,配置服务器更改了spring.cloud.config.uri(不要问我为什么:D)以指向其他配置服务器...当我调用/actuator/refresh端点时,我希望能够将配置服务器uri切换到刚收到的新uri。

我查看了spring-cloud-config的来源,但是那里的bean似乎没有用@RefreshScope进行注释。

springboot env /actuator/env似乎正在显示收到的新uri,但是配置客户端bean似乎仍指向引导uri。

关于如何实现此目标的任何建议?我对使用springboot很陌生。

谢谢!

1 个答案:

答案 0 :(得分:0)

对于其他尝试执行此操作的人,我从初始启动中删除了spring cloud配置,并根据需要添加了它,方法是先进行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();
}