动态刷新springboot配置

时间:2018-08-19 23:32:58

标签: spring-boot spring-cloud spring-cloud-config spring-config

更改springboot文件后,是否有任何方法可以刷新.properties配置?

我遇到了spring-cloud-config,许多文章/博客都建议将其用于分布式环境。我的springboot应用程序有很多部署,但它们彼此无关或相互依赖。我还查看了一些解决方案,他们建议提供其他终结点来手动刷新配置,而无需重新启动应用程序。但是我想在每次更改.properties文件时都动态地刷新配置,而无需人工干预。

任何指导/建议都值得赞赏。

1 个答案:

答案 0 :(得分:3)

您可以仅使用Spring Cloud Config“服务器”,并向Spring Cloud客户端发送信号,通知属性文件已更改。参见以下示例:

https://spring.io/guides/gs/centralized-configuration/

在幕后,它正在执行poll of the underlying resource,然后将其广播给您的客户:

    @Scheduled(fixedRateString = "${spring.cloud.config.server.monitor.fixedDelay:5000}")
    public void poll() {
        for (File file : filesFromEvents()) {
            this.endpoint.notifyByPath(new HttpHeaders(), Collections
                    .<String, Object>singletonMap("path", file.getAbsolutePath()));
        }
    }

如果您不想使用配置服务器,则可以使用自己的代码,使用类似的预定注释并监视properties文件:

@Component
public class MyRefresher {

    @Autowired
    private ContextRefresher contextRefresher;

    @Scheduled(fixedDelay=5000)
    public void myRefresher() {
        // Code here could potentially look at the properties file 
        // to see if it changed, and conditionally call the next line...
        contextRefresher.refresh();
    } 
}