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

文章目录

  • nacos自动刷新配置
  • 一、简单实现
  • 二、工具类自动刷新
    • 1.使用PostConstruct注解
    • 2.ApplicationContextAware
  • 总结

nacos自动刷新配置

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

一、简单实现


z nacos配置中心添加card.app.firmIds=2配置,发起请求得到返回数据

然后改成card.app.firmIds=2,6再次发起请求,得到的是

nacos配置的自动刷新就简单实现了。那么如果我们想在工具类中将配置赋值怎么办呢

二、工具类自动刷新

1.使用PostConstruct注解

将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的就行,条条大路通罗马。只是希望对于没有思路的朋友有一点提示。大家一起努力吧!!!希望早点解封,已经半个月了。。。。。

nacos配置自动刷新相关推荐

  1. Chapter2 消息总线 ConfigClient配置自动刷新

    Chapter2 消息总线ConfigClient配置自动刷新 Spring Cloud Bus: Spring Cloud Bus提供了批量刷新配置的机制,它使用轻量级的消息代理(例如RabbitM ...

  2. SpringCloud 入门教程(三): 配置自动刷新

    Spring Cloud 入门教程(三): 配置自动刷新 之前讲的配置管理, 只有在应用启动时会读取到GIT的内容, 之后只要应用不重启,GIT中文件的修改,应用无法感知, 即使重启Config Se ...

  3. springcloud21---Config-bus实现配置自动刷新

    Pivotal(毕威拓)有VMware和EMC成立的. RabbitMQ是由ERlang(爱立信开发的,面向并发的编程语言),安装RabbitMQ先要安装ERlang. package com.itm ...

  4. Spring Cloud Bus 消息总线实现配置自动刷新

    why 当微服务太多的时候,服务之间需要建立通信或一个服务的改变需要广播到所有其它服务,这时就需要有一个总线来承担对应的职责. what spring cloud bus 是通过轻量消息代理连接各个分 ...

  5. 第十六章:SpringCloud Config 配置自动刷新

    ####准备工作 我们首先需要下载rabbitMq(默认4396端口) MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法.应用程序通过读写出入队列的消息(针对 ...

  6. SpringCloud config 配置中心集群配置以及整合消息总线BUS实现关联微服务配置自动刷新

    一.SpringCloud Config 基本配置中的问题 在上一章节<SpringCloud config 配置中心介绍与基本配置使用>中我们现实了配置中心的配置集中管理.调用微服务应用 ...

  7. spring cloud微服务分布式云架构-config配置自动刷新

    本项目采用版本选择: springboot的版本是2.1.2.RELEASE springcloud的版本是Greenwich.SR1 springcloud仓库使用的是Gitee 1.下载并安装Ra ...

  8. nacos配置不自动刷新

    当我们把nacos服务端启动起来,项目中也集成好之后,兴高采烈的启动项目准备试一下,发现在nacos中修改配置之后发现项目中的配置竟然没有刷新,然后开始怀疑是不是自己那里配置的不对.那个注解没有写.n ...

  9. Nacos服务的注册,服务的调用,修改配置文件自动刷新和命名空间

    一.nacos配置中心的配置 使用nacos作为配置中心,不需要再到远端仓库拉取配置文件. 详细的nacos控制台配置参见官方链接 二.服务的注册 创建项目并引入依赖 <!--引入nacos c ...

最新文章

  1. b树与b+树的区别_一篇文章理清B树、B-树、B+树、B*树索引之间的区别与联系
  2. 英伟达“暴力碾压”谷歌:53分钟训练完BERT,2.2毫秒完成推理,创下NLP三项新纪录...
  3. python爬虫如何运行在web_Python Web爬网-使用爬虫进行测试
  4. ICCV 2019 | COCO-GAN:通过条件坐标的部分图像生成
  5. ios中amplify配置configure_Nginx源码编译安装及配置文件初步学习
  6. mysql 高并发 优惠券_转 mysql处理高并发,防止库存超卖
  7. python turtle_Python:turtle画粽子
  8. VirtualBox NAT网络实现 PXE 启动
  9. zoj 3551 Bloodsucker 概率DP
  10. JavaScript - 语言提高
  11. Google GMS认证问题
  12. 【CCF推荐专区】计算机类优质SCIEI好刊,期刊质量高,部分期刊仅有少量版面
  13. Python 常用的标准库以及第三方库有哪些?
  14. 数据分析师是青春饭吗?年龄影响很大吗?
  15. 【已解决】Mac OS 配置host域名映射不生效
  16. 怎么为typora配置一个可爱的小鲨鱼主题?
  17. 如何解决MathType无法正常使用问题
  18. 光通量、照度、光强度、亮度、辐射度、色彩还原的概念
  19. html中 \r\n不识别解决方案
  20. 时尚的法老—图坦卡门

热门文章

  1. 电信业务分类目录_2019年4月国内增值电信业务许可情况分析报告
  2. 阿里云服务器[教程3]一键安装php+mysql+ftp+nginx环境
  3. Python用whl文件安装模块
  4. 好的技术履历到底是怎样的?
  5. mysql建表 外键_mysql建表外键怎么设
  6. UNI-APP,设置某个页面横屏后,恢复竖屏,返回再次进入其他页面时,页面内容放大错乱
  7. 文明6联机方法与实践
  8. RFID破解三两事(原作者:YunFree)
  9. SpringSecurity配置权限:限制访问
  10. nodejs与php混合,node.js - php与nodejs的加密数据互通