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修改完不重启应用都会自动进行刷新
务实,说实话!