nacos配置自动刷新

这篇具有很好参考价值的文章主要介绍了nacos配置自动刷新。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


nacos自动刷新配置

nacos自动刷新配置是对于我们开发来说是非常方便的,不用每次修改都重启服务(这里说的是常量配置,不是redis、数据库之类的)。那么对于静态变量能正常刷新吗?

一、简单实现

nacos配置自动刷新
z nacos配置中心添加card.app.firmIds=2配置,发起请求得到返回数据
nacos配置自动刷新
然后改成card.app.firmIds=2,6再次发起请求,得到的是
nacos配置自动刷新
nacos配置的自动刷新就简单实现了。那么如果我们想在工具类中将配置赋值怎么办呢

二、工具类自动刷新

1.使用PostConstruct注解

将nacos配置读取到后赋值到静态变量中
nacos配置自动刷新
这种方式可以在服务启动时将nacos配置读取到静态变量中,但是如果nacos修改了配置的话,是不会自动刷新重新赋值给静态变量的。因为PostConstruct注解是在spring生命周期后期回调带有该注解的方法。服务不重启就不再次回调该方法,那么新的值也就不会赋上。那么我们有没有其他办法来实现呢?答案是肯定有的。

2.ApplicationContextAware

我们通过一个校验方法来验证是否读取到新的配置

public static boolean checkFirmId(Long firmId){
        FrimAndChannelUtil frimAndChannelUtil = applicationContext.getBean(FrimAndChannelUtil.class);
        if (CollectionUtils.isEmpty(listFirmIds)||
                !listFirmIds.stream().map(String::valueOf).collect(Collectors.joining(",")).equals(frimAndChannelUtil.getFirmIds())){
            handleFirmIdAndChannel(frimAndChannelUtil.getFirmIds(),null);
        }
        return listFirmIds.contains(firmId);
    }

传入一个id,通过getBean方法获取FrimAndChannelUtil对象,在spring的单例池中肯定是有这个对象的,但是获取到后,对于

@Value("${card.app.firmIds}")
    private String firmIds;
    @Value("${card.app.tradeChannels}")
    private String tradeChannels;

这两个参数是会重新读取的,所以在获取的时候是可以重新拿到nacos的配置的,而在校验方法中,我们有做判断是否需要重新赋值,如果对比出原先list数据和现有的配置不一致就重新赋值。当然这个时候,我们是不需要PostConstruct注解了,在第一次调用校验方法时进行初始化。以上就是静态变量动态刷新的实现。

总结

实现静态变量动态刷新的方法有很多,自己使用自己觉得OK的就行,条条大路通罗马。只是希望对于没有思路的朋友有一点提示。大家一起努力吧!!!希望早点解封,已经半个月了。。。。。文章来源地址https://www.toymoban.com/news/detail-402846.html

到了这里,关于nacos配置自动刷新的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包