动态刷新弹簧引导配置



有没有办法在更改文件后立即刷新springboot配置.properties

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

任何指南/建议都非常感谢。

您可以使用 Spring Cloud配置"服务器"并让它向您的 Spring Cloud 客户端发出属性文件已更改的信号吗?请参阅此示例:

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

在幕后,它正在对基础资源进行轮询,然后将其广播给客户端:

@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();
} 
}

相关内容

  • 没有找到相关文章

最新更新