Nacos Config 源码分析 二(Nacos配置更新后动态刷新到本地)

2023-10-27

当修改了Nacos配置的时候会自动刷新本地项目配置,来实现配置动态更新。

实现思路是当Spring项目启动的时候,会注册一个Listener监听器,在监听到配置发生变化的时候发布一个RefreshEvent事件,接下来利用Spring框架本身的内容刷新功能ContextRefresher来完成配置的刷新。

监听Spring项目启动

public class NacosContextRefresher implements ApplicationListener<ApplicationReadyEvent>, ApplicationContextAware {
  
    private Map<String, Listener> listenerMap = new ConcurrentHashMap(16);

     // SpringBoot启动的时候会发布该事件ApplicationReadyEvent 
    public void onApplicationEvent(ApplicationReadyEvent event) {
        if (this.ready.compareAndSet(false, true)) {
            this.registerNacosListenersForApplications();
        }

    }

注册Nacos的监听器Listener

注册一个监听器,当配置发生变化的时候发布一个Spring的内容刷新事件RefreshEvent

执行链:

this.registerNacosListenersForApplications()->
this.registerNacosListener(nacosPropertySource.getGroup(), dataId)->
private void registerNacosListener(final String group, final String dataId) {
        // Lambda注册一个Listener事件
        Listener listener = (Listener)this.listenerMap.computeIfAbsent(dataId, (i) -> {
            return new Listener() {
                public void receiveConfigInfo(String configInfo) {
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Nacos Config 源码分析 二(Nacos配置更新后动态刷新到本地) 的相关文章

随机推荐

  • ERR_UNKNOWN_URL_SCHEME 导致的可能问题

    今晚在做跨域测试的时候 明明已经用了 jsoup去处理 但却一直报 ERR UNKNOWN URL SCHEME 错误 然后就是百度找答案 但是也没有解决问题 然后看了一下自己请求的地址是下面这样的 前面没有加上 http 所以我在前面加上
  • Docker+Nginx:实现网站部署的灵活性与高效性

    Hi I m Huuuui 这次为大家简单介绍一下docker环境中去部署nginx 希望能够帮到大家 环境 1 拉取nginx镜像 拉取镜像 docker pull nginx 查看镜像 docker images 2 本地创建映射文件夹
  • E罗斯宝藏网站,收藏起来一定用的到!

    网站叫做https rutracker org 收藏起来总有一天你会用得到 你可以在这里获取各种资源 例如Adobe全家桶 Windows系统 以及各种游戏和3a大作电影等 当初为了打击盗版被封禁 现在因为各大公司对E罗斯的制裁 该网站已被
  • 数据库开发技术

    第一次作业 一 单选题 共40题 80分 1 单选题 2分 单选题 在E R模型中 实体间的联系用 图标来表示 A 矩形 B 直线 C 菱形 D 椭圆 我的答案 C 菱形 正确答案 C 菱形 2分 2 单选题 2分 单选题 设R是一个关系模
  • antd中form表单的正则校验

    以下面input为例
  • 数仓及其维度(分层)建模(ODS DWD DWS DWT ADS)

    一 数仓及其维度 1 什么是数仓 数据仓库 简称数仓 Data Warehouse 从逻辑上理解 数据库和数仓没有区别 都是通过数据库软件实现存放数据的地方 只不过从数据量来说 数据仓库要比数据库更庞大 数仓主要是为企业制定决策 提供数据支
  • 小白入门区块链(通俗易懂)

    区块链基础入门 什么是区块链 科技层面解释 数学 密码学 互联网 计算机编程 官方解释 区块链是一个分布式的共享账本和数据库 具有去中心化 不可篡改 全程留痕 可以追溯 集体维护 公开通明的特点分布式数字账簿 加密技术 不可篡改 通证 一种
  • C++中的基本语句

    C 程序由很多明确表达的语句组成 其中常见的语句包含声明语句 赋值语句 消息语句 函数调用 函数原型和返回语句 其中声明语句和赋值语句中的核心就是变量 变量的声明语句 也称为定义 使用一个简单的标识符来描述计算机存储空间中一定位置的存储单元
  • Python生成requestment.txt文件

    python中通过requirements txt来记录项目所有的依赖包及其版本号 以便在其他的环境中部署 pip freeze gt requirements txt python中通过requirements txt来记录项目所有的依赖
  • 详细聊聊Vue中设计的computed和watch

    一 定义 它们都提供了一种在响应式数据变化时执行响应操作的机制 computed 计算属性 是基于其他数据进行计算得到的 依赖于其他数据 只有当依赖的数据发生变化时 计算属性才会自动更新 并当作普通属性进行访问 computed 当firs
  • CentOS7.6下安装PaddleOCR

    最近看到百度开源的OCR系统 识别效果非常不错 故安装实验一把 在此记录一下安装过程 避免遗忘 我做了一个干净的CentOS7系统 系统上没用docker服务 先安装docker 1 curl sSL https get daocloud
  • 以太坊学习笔记(一)——免费获得测试ETH

    以太坊除了主网之外 还有 Ropsten Kovan Rinkeby等测试环境可供学习 在浏览器钱包插件MetaMask里有以下几个测试环境可以供我们使用 目前以太坊开发最常用的测试网络是Rinkeby 我们就讲讲如何通过Rinkeby免费
  • 【003 中断】tasklet和workqueue的区别和底层实现的区别

    一 tasklet和workqueue的区别和底层实现的区别 1 softirq和tasklet都属于软中断 tasklet是softirq的特殊实现 workqueue是普通的工作队列 2 tasklet和workqueue 两者都是中断
  • android开发 BaseAdapter中getView()里的3个参数的含义

    int position位置 一般BaseAdapter都是很多类型一样的数据展示在界面 该属性是判断显示在界面上的是第几个 通过position在BaseAdapter自定义的数组或者集合中取值 并展示在界面上 View converVi
  • 华电(北京)电气学硕考研经历复盘和“李徵能化虎”and“Hooray“

    初试 复试 从考研到拟录取 提示 本人不是一战就考上的 而是似曾国藩平太平天国 屡败屡战 这里主要是反思自己在备考期间所犯的错误 这篇文章不是考研经验贴 建议有自己学习方法的人结合考研经验贴和我的复盘贴一起看 毕竟 考研复习时应该做什么 你
  • 华为OD机试真题-分奖金【2023.Q1】

    题目内容 公司老板做了一笔大生意 想要给每位员工分配一些奖金 想通过游戏的方式来决定每个人分多少钱 按照员工的工号顺序 每个人随机抽取一个数字 按照工号的顺序往后排列 遇到第一个数字比自己数字大的 那么 前面的员工就可以获得 距离数字差值
  • AD20绘制异形板框,没有Keep-out Layer层?

    1 在其他层绘制一个闭合的异形板框 2 选中闭合板框 F11打开全局编译窗口 重点 AD20和AD16的区别在这里 AD16可以直接从这个地方切换到keepout layer层 但是在这个窗口中AD20没有keep out layer图层
  • yolov5的TensorRT部署--动态batch

    从0到1实现基于tensorrt的yolo部署教程 http t csdn cn HUn4T 请点击该链接 即可看到全文 本文对于上面的案例 从多batc的角度详细讲解 一 生成TensorRT模型的多batch设置 对于充分利用多batc
  • Windows 上Go env 命令设置Go环境变量

    在旧版本中使用下面的命令设置 Enable the go modules feature env GO111MODULE on Set the GOPROXY environment variable env GOPROXY https g
  • Nacos Config 源码分析 二(Nacos配置更新后动态刷新到本地)

    当修改了Nacos配置的时候会自动刷新本地项目配置 来实现配置动态更新 实现思路是当Spring项目启动的时候 会注册一个Listener监听器 在监听到配置发生变化的时候发布一个RefreshEvent事件 接下来利用Spring框架本身