更改springboot
文件后,是否有任何方法可以刷新.properties
配置?
我遇到了spring-cloud-config
,许多文章/博客都建议将其用于分布式环境。我的springboot
应用程序有很多部署,但它们彼此无关或相互依赖。我还查看了一些解决方案,他们建议提供其他终结点来手动刷新配置,而无需重新启动应用程序。但是我想在每次更改.properties
文件时都动态地刷新配置,而无需人工干预。
任何指导/建议都值得赞赏。
答案 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();
}
}