nacos配置自动刷新(不重启应用)

(一)背景

我们平常的开发中经常会遇到需要修改配置的情况,但是又不希望重启应用。以nacos为例子,哪些情况修改完配置不重启应用就可以自动生效呢?下面开始做个简单的测试

(二)测试

@value注解

 

@Value("${testa.name}")
private String name;

 

经测试,每次在nacos修改完不重启应用是不会自动进行刷新的

此时,我们给对应的所在的bean加上 @RefreshScope 注解,此时不重启应用也能自动更新

这里的原理是:

其实nacos上配置变更有通知到应用,通过观察日志就可以观察出来,但是由于bean已经创建好,配置变更后不会重新创建所以对应的配置值没有变更。

@RefreshScope注解加上之后,这个bean会放进refresh scope这个bean缓存中,当配置中心发生变更后,会把变更的配置更新到spring容器的Environment中,bean缓存就会被清空,从而创建新的bean实例,所以此时@value能从Environment中获取最新的值,达到动态刷新的效果

@ConfigurationProperties

经测试,每次在nacos修改完不重启应用都会自动进行刷新

 

posted @ 2023-05-08 13:06  xtu熊大  阅读(972)  评论(0编辑  收藏  举报