nacos配置自动刷新
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 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配置自动刷新相关推荐
- Chapter2 消息总线 ConfigClient配置自动刷新
Chapter2 消息总线ConfigClient配置自动刷新 Spring Cloud Bus: Spring Cloud Bus提供了批量刷新配置的机制,它使用轻量级的消息代理(例如RabbitM ...
- SpringCloud 入门教程(三): 配置自动刷新
Spring Cloud 入门教程(三): 配置自动刷新 之前讲的配置管理, 只有在应用启动时会读取到GIT的内容, 之后只要应用不重启,GIT中文件的修改,应用无法感知, 即使重启Config Se ...
- springcloud21---Config-bus实现配置自动刷新
Pivotal(毕威拓)有VMware和EMC成立的. RabbitMQ是由ERlang(爱立信开发的,面向并发的编程语言),安装RabbitMQ先要安装ERlang. package com.itm ...
- Spring Cloud Bus 消息总线实现配置自动刷新
why 当微服务太多的时候,服务之间需要建立通信或一个服务的改变需要广播到所有其它服务,这时就需要有一个总线来承担对应的职责. what spring cloud bus 是通过轻量消息代理连接各个分 ...
- 第十六章:SpringCloud Config 配置自动刷新
####准备工作 我们首先需要下载rabbitMq(默认4396端口) MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法.应用程序通过读写出入队列的消息(针对 ...
- SpringCloud config 配置中心集群配置以及整合消息总线BUS实现关联微服务配置自动刷新
一.SpringCloud Config 基本配置中的问题 在上一章节<SpringCloud config 配置中心介绍与基本配置使用>中我们现实了配置中心的配置集中管理.调用微服务应用 ...
- spring cloud微服务分布式云架构-config配置自动刷新
本项目采用版本选择: springboot的版本是2.1.2.RELEASE springcloud的版本是Greenwich.SR1 springcloud仓库使用的是Gitee 1.下载并安装Ra ...
- nacos配置不自动刷新
当我们把nacos服务端启动起来,项目中也集成好之后,兴高采烈的启动项目准备试一下,发现在nacos中修改配置之后发现项目中的配置竟然没有刷新,然后开始怀疑是不是自己那里配置的不对.那个注解没有写.n ...
- Nacos服务的注册,服务的调用,修改配置文件自动刷新和命名空间
一.nacos配置中心的配置 使用nacos作为配置中心,不需要再到远端仓库拉取配置文件. 详细的nacos控制台配置参见官方链接 二.服务的注册 创建项目并引入依赖 <!--引入nacos c ...
最新文章
- b树与b+树的区别_一篇文章理清B树、B-树、B+树、B*树索引之间的区别与联系
- 英伟达“暴力碾压”谷歌:53分钟训练完BERT,2.2毫秒完成推理,创下NLP三项新纪录...
- python爬虫如何运行在web_Python Web爬网-使用爬虫进行测试
- ICCV 2019 | COCO-GAN:通过条件坐标的部分图像生成
- ios中amplify配置configure_Nginx源码编译安装及配置文件初步学习
- mysql 高并发 优惠券_转 mysql处理高并发,防止库存超卖
- python turtle_Python:turtle画粽子
- VirtualBox NAT网络实现 PXE 启动
- zoj 3551 Bloodsucker 概率DP
- JavaScript - 语言提高
- Google GMS认证问题
- 【CCF推荐专区】计算机类优质SCIEI好刊,期刊质量高,部分期刊仅有少量版面
- Python 常用的标准库以及第三方库有哪些?
- 数据分析师是青春饭吗?年龄影响很大吗?
- 【已解决】Mac OS 配置host域名映射不生效
- 怎么为typora配置一个可爱的小鲨鱼主题?
- 如何解决MathType无法正常使用问题
- 光通量、照度、光强度、亮度、辐射度、色彩还原的概念
- html中 \r\n不识别解决方案
- 时尚的法老—图坦卡门
热门文章
- 电信业务分类目录_2019年4月国内增值电信业务许可情况分析报告
- 阿里云服务器[教程3]一键安装php+mysql+ftp+nginx环境
- Python用whl文件安装模块
- 好的技术履历到底是怎样的?
- mysql建表 外键_mysql建表外键怎么设
- UNI-APP,设置某个页面横屏后,恢复竖屏,返回再次进入其他页面时,页面内容放大错乱
- 文明6联机方法与实践
- RFID破解三两事(原作者:YunFree)
- SpringSecurity配置权限:限制访问
- nodejs与php混合,node.js - php与nodejs的加密数据互通