更新标记为RefreshScope的Bean

时间:2017-01-02 07:44:57

标签: refresh reload spring-cloud-config

这是我的情景: 我的微服务从中央conf服务器收到有关其配置的一些更改的通知。它可以是部分更新,也可以是完整更新。 我在相关bean上使用@RefreshScope标记。问题是如何更新标记的bean,我的意思是重新加载它们。 只是为了澄清:从Spring Cloud我只使用RefreshScope。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

  1. 在项目中添加依赖项org.springframework.boot:spring-boot-starter-actuator
  2. 通过调用refresh端点刷新配置。
  3. 例如,您可以像下面一样配置管理端点。 curl -X POST http://localhost:8001/manage/refresh将触发刷新更改的配置。

    management: context-path: /manage port: 8001 security.enabled: false

答案 1 :(得分:0)

如果您有不同的组件受更改影响,那么最好将您的配置保存在存储库中,然后您可以添加发布 - 订阅模型以刷新上下文,其中所有受影响的组件将订阅一个事件,即由于配置更改而由您的存储库发布。

对于刷新上下文,我们有两个选择:

  1. 通过帖子请求点击您应用的刷新终点。
  2. 通过自动装配获取RefreshEndpoint bean,然后应用refreshEndpoint.refresh()。这将在运行时刷新上下文。
  3. 在两个解决方案中,通过@RefreshScope标记感兴趣的豆。