当前位置: 首页 > news >正文

Nacos热更新

Nacos热更新

相比其他注册中心,Nacos的优势之一在于热更新。
热更新,就是不需要重启服务,就能够更新配置。

nacos配置中心

首先,需要搭建 Nacos,详情见: https://www.cnblogs.com/expiator/p/17392549.html

  • provider-dev.yaml,配置如下 :
my:name: chenage: 28

第一种方式: @RefreshScope

Nacos可以通过注解 @RefreshScope 热更新。
只需在类上方添加 @RefreshScope 即可。

示例如下:

  • 添加 @RefreshScope
    在Controller上方添加即可。
    启动服务后,调用接口,就可以查看到配置的值。
@RestController
@RefreshScope
public class ProviderController {/***  后面的 :abc 表示默认值为 abc。*/@Value("${my.name:abc}")private String configName;@GetMapping(value = "/provider/config")public String getConfig() {return configName;}
}
  • provider-dev.yaml,修改配置为:
my:name: liuage: 28
  • 查看配置
    可以看到日志显示配置项已经更新,
RefreshEventListener       : Refresh keys changed: [my.name]

无须重启服务,修改Nacos配置后,调用接口,查看配置信息,如下:
可以看到,已经是最新的配置。

第二种方式: @ConfigurationProperties

  • @ConfigurationProperties示例如下:

ConfigurationProperties做热更新。prefix 表示前缀。
比如 my.name配置,对应前缀为 my,属性为 name。

/*** ConfigurationProperties做热更新。prefix 表示前缀,比如my.name,还有my.age,前缀就是 my*/
@Component
@Data
@ConfigurationProperties(prefix = "my")
public class MyConfig {/*** my.name配置,对应前缀my,属性 name*/private String name;private Integer age;
}
  • 控制层:
@RestController
public class MyConfigController {@Autowiredprivate MyConfig config;@RequestMapping("/provider/config/my")public String getConfig() {return config.getName();}}

无须重启服务,修改Nacos配置后,调用接口,就可以查看到最新的配置信息。

参考资料:

https://blog.csdn.net/wang_o_yi/article/details/124387045
https://blog.csdn.net/LMGD_/article/details/128303186

相关文章:

  • 学习c#的第四天
  • 深度解剖Linux权限的概念
  • 关于session的不断变化问题
  • Python:使用marshmallow实现Python数据序列化、反序列化、数据验证
  • 智能一体化管网水位监测仪怎么样?
  • Wireshark抓包(网络分析)工具
  • 机器学习——朴素贝叶斯
  • 利用 Google Artifact Repository 构建docker 镜像仓库
  • C语言左移与右移学习
  • 由浅入深学习统计学 - 常用统计图形学习
  • Stream流的groupingBy
  • 100天精通风控建模(原理+Python实现)——第3天:风控建模中如何处理缺失值?
  • 如何有效的保护Windows登录 安当加密
  • Googletest(Gtest)使用case指南
  • Leetcode153. Find Minimum in Rotated Sorted Array
  • [PHP内核探索]PHP中的哈希表
  • 2019年如何成为全栈工程师?
  • 30秒的PHP代码片段(1)数组 - Array
  • JDK9: 集成 Jshell 和 Maven 项目.
  • Laravel Telescope:优雅的应用调试工具
  • Node.js 新计划:使用 V8 snapshot 将启动速度提升 8 倍
  • React 快速上手 - 06 容器组件、展示组件、操作组件
  • TypeScript实现数据结构(一)栈,队列,链表
  • 从0到1:PostCSS 插件开发最佳实践
  • 小试R空间处理新库sf
  • 自动记录MySQL慢查询快照脚本
  • [地铁译]使用SSD缓存应用数据——Moneta项目: 低成本优化的下一代EVCache ...
  • Mac 上flink的安装与启动
  • 如何正确理解,内页权重高于首页?
  • ​​​​​​​​​​​​​​汽车网络信息安全分析方法论
  • ​Linux Ubuntu环境下使用docker构建spark运行环境(超级详细)
  • ​TypeScript都不会用,也敢说会前端?
  • #Linux(权限管理)
  • #LLM入门|Prompt#1.8_聊天机器人_Chatbot
  • (2009.11版)《网络管理员考试 考前冲刺预测卷及考点解析》复习重点
  • (22)C#传智:复习,多态虚方法抽象类接口,静态类,String与StringBuilder,集合泛型List与Dictionary,文件类,结构与类的区别
  • (3)选择元素——(14)接触DOM元素(Accessing DOM elements)
  • (Demo分享)利用原生JavaScript-随机数-实现做一个烟花案例
  • (大众金融)SQL server面试题(1)-总销售量最少的3个型号的车及其总销售量
  • (二)正点原子I.MX6ULL u-boot移植
  • (翻译)Quartz官方教程——第一课:Quartz入门
  • (附源码)springboot金融新闻信息服务系统 毕业设计651450
  • (附源码)ssm本科教学合格评估管理系统 毕业设计 180916
  • (剑指Offer)面试题41:和为s的连续正数序列
  • (解决办法)ASP.NET导出Excel,打开时提示“您尝试打开文件'XXX.xls'的格式与文件扩展名指定文件不一致
  • (九)信息融合方式简介
  • (六)激光线扫描-三维重建
  • (五) 一起学 Unix 环境高级编程 (APUE) 之 进程环境
  • (五)关系数据库标准语言SQL
  • (续)使用Django搭建一个完整的项目(Centos7+Nginx)
  • (译)计算距离、方位和更多经纬度之间的点
  • (转)Scala的“=”符号简介
  • .Net Redis的秒杀Dome和异步执行
  • .net和jar包windows服务部署
  • .Net环境下的缓存技术介绍