我引导我的springboot应用程序指向默认配置服务器以在启动时获取配置道具,配置服务器更改了spring.cloud.config.uri
(不要问我为什么:D)以指向其他配置服务器...当我调用/actuator/refresh
端点时,我希望能够将配置服务器uri切换到刚收到的新uri。
我查看了spring-cloud-config的来源,但是那里的bean似乎没有用@RefreshScope
进行注释。
springboot env /actuator/env
似乎正在显示收到的新uri,但是配置客户端bean似乎仍指向引导uri。
关于如何实现此目标的任何建议?我对使用springboot很陌生。
谢谢!
答案 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();
}