Nacos热更新(动态获取配置)

写在前面:各位看到此博客的小伙伴,如有不对的地方请及时通过私信我或者评论此博客的方式指出,以免误人子弟。多谢!如果我的博客对你有帮助,欢迎进行评论✏️✏️、点赞👍👍、收藏⭐️⭐️,满足一下我的虚荣心💖🙏🙏🙏 。

在这一篇 Nacos作为配置中心-CSDN博客 

中提到使用@RefreshScope注解动态的获取配置中心的数据,这里详细补充记录一下。

目录

测试准备

动态获取配置

@value和@RefreshScope

@ConfigurationProperties(prefix = "")和@RefreshScope


测试准备

首先,在nocos中添加配置:

readTimeout: 5000 

然后,在测试方法中添加如下代码:

@Value("${readTimeout}")
private String readTimeout; @GetMapping(value = "/readTimeout")
public String testConfig() {return readTimeout;
}

测试

启动项目后浏览器访问如下地址:

http://localhost:18880/consumer/readTimeout

浏览器返回如下:

此时我们把nocos配置中的readTimeout值改为50000后再次访问上面的地址,发现浏览器返回的依然是5000。

动态获取配置

在nocos配置中修改后不重启项目立即生效的现象我们就可以叫他动态获取。想要实现动态获取配置,我们可以使用如下两种方式:

1、使用@value和@RefreshScope
2、@ConfigurationProperties(prefix = "")和@RefreshScope

@value和@RefreshScope

首先我们试下@value和@RefreshScope的方式,只要将上面测试方法的类上加上@RefreshScope注解即可,完整代码如下:

@RefreshScope
@RestController
@RequestMapping("/consumer") 
public class TestController {@Value("${readTimeout}")private String readTimeout;@GetMapping(value = "/readTimeout")public String testConfig() {return readTimeout;}}
@ConfigurationProperties(prefix = "")和@RefreshScope

当要配置的属性较多的时候,使用上面的方式就有点麻烦,也可以使用@ConfigurationProperties注解,建立一个类来装数据,比如nocos中有如下数据:

user:age: 18sex: 男

我们可以使用@ConfigurationProperties建立一个类来接收配置中的数据,如下:

@Component
@ConfigurationProperties(prefix = "user")
@Data
public class NacosPropertiesConfig {private String sex;private String age;}

然后测试类中添加如下方法进行测试:

@RefreshScope
@RestController
public class TestController {@Value("${readTimeout}")private String readTimeout;@Autowiredprivate NacosPropertiesConfig propertiesConfig;@GetMapping(value = "/readTimeout")public String testConfig() {return readTimeout;}@GetMapping(value = "/user")@ResponseBodypublic NacosPropertiesConfig testConfig2() {return propertiesConfig;}

此时访问 http://localhost:18880/consumer/user    ,浏览器返回如下:

将年龄改为30后再次访问,结果如下:

如上使用两种方式实现了配置文件的动态获取。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/268065.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Hadoop_05】NN、2NN以及DataNode的工作机制

1、NameNode和SecondaryNameNode1.1 NN和2NN工作机制1.2 Fsimage和Edits解析1.3 CheckPoint时间设置 2、DataNode2.1 DataNode工作机制2.2 数据完整性2.3 掉线时限参数设置 1、NameNode和SecondaryNameNode 1.1 NN和2NN工作机制 思考:NameNode中的元数据是存储在哪…

python实战教学之python版“张万森,好久不见”

前言 WINTER IS COMING 最近《一闪一闪亮星星》的电影在火热预售中,家人们抢到票了嘛,前两天小编写了一篇“张万森,下雪了”的文章后,收到了不少小伙伴的反馈:“代码的运行结果只有文字,没有雪花啊”&#…

一文了解什么是Selenium自动化测试?

一、Selenium是什么? 用官网的一句话来讲:Selenium automates browsers. Thats it!简单来讲,Selenium是一个用于Web应用程序自动化测试工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作浏览器一样。支持的浏…

react Hooks(useEffect)实现原理 - 简单理解

useEffect 语法: useEffect(setup, dependencies?) 含义: useEffect 是一个 React Hook,它允许你 将组件与外部系统同步。 useEffect 源码简单理解 一、mountEffect 和 upadateEffect useEffect 与其它 hooks 一样分为 mountEffect 和 upadateEffec…

springboot整合swagger

1)简介: 作为后端开放人员,最烦的事就是自己写接口文档和别人没有写接口文档,不管是前端还是后端开发,多多少少都会被接口文档所折磨,前端会抱怨后端没有及时更新接口文档,而后端又会觉得编写接…

【C++】类与对象(下)

本文目录 1. 再谈构造函数1.1 构造函数体赋值1.2 初始化列表1.3 explicit关键字 2. static成员2.1 概念2.2 特性 3. 友元3.1 友元函数3.2 友元类 4. 内部类5. 匿名对象6. 拷贝对象时的一些编译器优化7. 再次理解类和对象 1. 再谈构造函数 1.1 构造函数体赋值 在创建对象时&am…

配电箱安全检查

配电箱怎么检查,如何识破电箱安全隐患? (1)一物一码:每个配电箱都有独一无二标识二维码,巡检人员到达现场扫码即可填写巡检记录,查看配电箱的参数、负责人、操作规则等信息; &#x…

(新手必看)自定义数据传输通信协议+STM32代码详解

前言 本篇博客主要学习和了解一些单片机协议的格式,在对传输大数据或者要求准确性的时候,都需要通过协议来发送接收,下面通过了解协议的基本构成和代码来分析和实现协议的发送和接收。本篇博客大部分是自己收集和整理,如有侵权请联…

MyBatisPlus简介

1 简介 MyBatis-Plus(简称 MP)是一个 MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。 2、特性 无侵入 只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑…

淡化了技术指标 还能做现货黄金交易?

技术指标是分析和预测现货黄金走势的其中一种方法,普通投资者多数依赖技术指标为自己的交易做判断。然而,近几年有一种观点认为,我们应该淡化技术指标,少使用或者不用技术分析来服务我们的交易。这个观点引起了不少投资者的思考&a…

Adobe的3D建模工具Substance 3D Painter 9.1.1 版本下载与安装

目录 前言一、Substance 3D Painter 9.1.1安装二、使用配置总结 前言 Adobe的Substance 3D Painter是一款强大的3D建模和纹理创建工具,专为数字艺术家设计,尤其是3D画家、游戏设计师和视觉特效艺术家。注:文末附有下载链接! 这款…

关于Android studio新版本和NEW UI显示返回按钮的设置

1.新版Android studio问题 因为在新版本的Android Studio中,默认情况下是没有直接的选项来显示返回上一步按钮在状态栏上的,可以通过以下方法来实现返回上一步的功能: 在Android Studio的顶部菜单栏中,选择"View"。在…