nacos的热更新

王静0716 发布于 09/30 11:30
阅读 285
收藏 0

用nacos做配置中心。

Q1:一定要@RefreshScope和@Value配合使用吗?

Q2:@FeignClient(url="${XX}"),只在interface上加@RefreshScope,XX修改了不能即时更新,如果在有@Value("${XX}")的class上加@RefreshScope,才起作用。

Q3:@ConfigurationProperties的配置类,在class上加@RefreshScope会即时更新吗?

Q4:修改配置后,含有该配置的服务,会打印出 Loading nacos data, dataId: 'XXX-dev.yml' ……Started application in 0.217 seconds (JVM running for 60511.743)。这个started application有啥意思。。。修改数据源应该不能热更新吧,还是要重启相应服务吧?

加载中
0
心心念叨的人

建议看一下 

com.alibaba.nacos.spring.context.annotation.config.NacosValueAnnotationBeanPostProcessor 类,热更新是从NacosValue注解判断的,用反射做处理。 你的注解方式我不清楚在哪实现的

王静0716
王静0716
回复 @心心念叨的人 : 这种我试了的,可是没有@NacosPropertySource这个注解,大概是版本不对,我的版本是1.1.0
心心念叨的人
回复 @王静0716 : 我这边是这样做的 springboot 启动类上加 @NacosPropertySource(dataId = WitParkingNacosDataId.BASEPLATFORM, autoRefreshed = true) 然后在原来要注入Value的地方改成NacosValue
王静0716
王静0716
回复 @心心念叨的人 : 放假我研究一下,现在不能用上@NacosValue
心心念叨的人
回复 @王静0716 : 哥们自己看源码+教程吧,好好测测,我们生产都用上了。NacosValue
王静0716
王静0716
我用@NacosValue,不会赋值
0
心心念叨的人

我记得是@NacosValue

另外,从源码上来看,是通过反射执行的热更新

王静0716
王静0716
我测试了一下,用2个Controller,一个有@RefreshScope,一个没有,都引用@Value得到某个变量,结果有@RefreshScope的热更新了,另一个还是启动时候的值。
0
王静0716
王静0716

我想把配置文件的变量都放到一个class里,变量都定义为public static,@PostConstruct初始赋值,热更新怎么处理?

0
王静0716
王静0716

@RefreshScope和@ConfigurationProperties(prefix = "XX")  也可以生效。

返回顶部
顶部