Nacos配置管理-配置热更新

目录

一、Nacos配置管理回顾

1.1 统一配置管理

1.1.1 在nacos中添加配置文件

1.1.2 在弹出的表单中,填写配置信息

1.1.3 从微服务拉取配置

 1.1.4 在项目中新增一个配置文件bootstrap.yaml,内容如下:

 1.1.5 读取nacos配置

 1.1.6 效果

二、配置热更新步骤

第一种方式:在@Value注入的变量所在类上添加注解@RefreshScope

 第二种方式:@ConfigurationProperties注解

 三、总结


一、Nacos配置管理回顾

Nacos除了可以做注册中心,同样可以做配置管理来使用。

1.1 统一配置管理

当微服务部署的实例越来越多,达到数十、数百时,逐个修改微服务配置就会让人抓狂,而且很容易出错。我们需要一种统一配置管理方案,可以集中管理所有实例的配置。

Nacos一方面可以将配置集中管理,另一方可以在配置变更时,及时通知微服务,实现配置的热更新。

1.1.1 在nacos中添加配置文件

1.1.2 在弹出的表单中,填写配置信息

注意:项目的核心配置,需要热更新的配置才有放到nacos管理的必要。基本不会变更的一些配置还是保存在微服务本地比较好。

1.1.3 从微服务拉取配置

在服务中,引入nacos-config的客户端依赖

<!--nacos配置管理依赖-->
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
 1.1.4 在项目中新增一个配置文件bootstrap.yaml,内容如下:
spring:application:name: userservice # 服务名称profiles:active: dev #开发环境,这里是dev cloud:nacos:server-addr: localhost:8848 # Nacos地址config:file-extension: yaml # 文件后缀名
 1.1.5 读取nacos配置

在服务中的Controller中添加业务逻辑,读取pattern.dateformat配置

package cn.itcast.user.web;import cn.itcast.user.pojo.User;
import cn.itcast.user.service.UserService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.*;import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;@Slf4j
@RestController
@RequestMapping("/user")
public class UserController {@Autowiredprivate UserService userService;@Value("${pattern.dateformat}")private String dateformat;/*** 路径: /user/110** @param id 用户id* @return 用户*/@GetMapping("/{id}")public User queryById(@PathVariable("id") Long id) {return userService.queryById(id);}@GetMapping("/now")public String now(){return LocalDateTime.now().format(DateTimeFormatter.ofPattern(dateformat));}
}
 1.1.6 效果

在页面访问,可以看到效果:

 

二、配置热更新步骤

实现Nacos中的配置文件变更后,微服务无需重启就可以感知,有两种配置方式:

第一种方式:在@Value注入的变量所在类上添加注解@RefreshScope
@Slf4j
@RestController
@RequestMapping("/user")
@RefreshScope //热更新注解
public class UserController {@Value("$pattern.dateformat}")private String dateformat;.........
}
 第二种方式:@ConfigurationProperties注解

        步骤1.  使用@ConfigurationProperties注解创建实体,实现自动配置

@Component
@Data
@ConfigurationProperties(prefix ="pattern")
public class PatternProperties {private String dateformat;
}

         步骤2.  在Controller中注入PatternProperties 

@RequestMapping("/user")
public class UserController {@Autowiredprivate UserService userService;@Autowiredprivate PatternProperties properties;@GetMapping("now")public String now(){return LocalDateTime.now().format(DateTimeFormatter,ofPattern(properties.getDateformat());}}

 三、总结

Nacos配置更改后,微服务可以实现热更新,方式有以下两种:

  • 通过@Value注解注入,结合@RefreshScope来刷新
  • 通过@ConfigurationProperties注入,自动刷新

注意事项:

  • 不是所有的配置都适合放到配置中心,维护起来比较麻烦;
  • 建议将一些关键参数,需要运行时调整的参数放到nacos配置中心,一般都是自定义配置;

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

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

相关文章

漏洞复现-华为Auth-HTTP服务器任意文件读取漏洞(附漏洞检测脚本)

免责声明 文章中涉及的漏洞均已修复&#xff0c;敏感信息均已做打码处理&#xff0c;文章仅做经验分享用途&#xff0c;切勿当真&#xff0c;未授权的攻击属于非法行为&#xff01;文章中敏感信息均已做多层打马处理。传播、利用本文章所提供的信息而造成的任何直接或者间接的…

36V H 桥有刷直流驱动芯片GC8870 GC8871 GC8872的数据选型分析

36V H 桥驱动芯片GC8870 GC8871 GC8872都可替代TI的DRV8870/8871/8872&#xff0c;宽电压&#xff0c;内置电荷泵&#xff0c;短地短电源保护&#xff0c;限流等功能&#xff0c;可应用于水泵&#xff0c;扫地机器人&#xff0c;开关等产品中

工地配电箱巡检二维码

施工工地的外部环境条件恶劣,加之工地上机动车辆的运行和机械设备的应用&#xff0c;均易导致电气故障的发生。现场配电箱缺乏专业技术人员的管理,易造成触电伤害、火灾等事故。 1、每个配电箱对应一个二维码 将配电箱的参数、负责人、操作规则等设备信息上传,现场扫码即可查看…

精通 JavaScript 数据处理大全:手写代码从入门到精通

​&#x1f308;个人主页&#xff1a;前端青山 &#x1f525;系列专栏&#xff1a;JavaScript篇 &#x1f516;人终将被年少不可得之物困其一生 依旧青山,本期给大家带来JavaScript篇专栏内容:JavaScript- 数据处理 目录 1. 实现日期格式化函数 2. 交换a,b的值&#xff0c;不…

使用pdf2docx轻松将PDF转换成docx

目录 一、什么是pdf2docx&#xff1f; 二、为什么选择pdf2docx&#xff1f; 三、如何使用pdf2docx&#xff1f; 四、常见问题和解决方案 总结 随着数字化时代的到来&#xff0c;PDF和docx格式已经成为我们日常工作中最常用的文档格式之一。然而&#xff0c;有时我们需要将…

电脑录制高清视频文件是怎么设置的

在当今数字化的时代&#xff0c;电脑已经成为我们生活中不可或缺的工具。除了处理文档、浏览网页等常见功能外&#xff0c;它还可以轻松录制高清视频文件。那么&#xff0c;具体如何设置电脑才可以录制高清视频呢&#xff1f; 首先&#xff0c;要确保电脑的硬件配置是否能够支…

【面试】Java最新面试题资深开发-Java中的并发集合类

问题五&#xff1a;Java中的并发集合类 Java提供了许多并发集合类来处理多线程环境下的数据共享和同步。你能列举一些Java中常用的并发集合类&#xff0c;并简要说明它们的特点和使用场景吗&#xff1f; 以下六个是经常被使用的&#xff0c;它们在实际开发中发挥着重要作用&a…

探究振弦采集仪在工程监测中的应用

探究振弦采集仪在工程监测中的应用 振弦采集仪是一种专门用于测量结构振动的仪器&#xff0c;在工程监测中有着广泛的应用。它通过采集振动信号&#xff0c;分析结构的振动特性&#xff0c;从而评估结构的安全性能&#xff0c;指导工程设计和施工。本文将从振弦采集仪的基本原…

【日志技术】附Logback入门教程

文章目录 日志概论日志的体系Logback快速入门日志配置文件配置日志级别 日志概论 什么是日志&#xff1f;其实可以通过下面几个问题来了解的。 系统系统能记住某些数据被谁操作&#xff0c;比如被谁删除了&#xff1f;想分析用户浏览系统的具体情况&#xff0c;比如挖掘用户的…

香港麦理浩径一二段两天徒步沙滩露营

文章目录 香港麦理浩径一二段两天徒步沙滩露营 香港麦理浩径一二段两天徒步沙滩露营 凌晨六点起床慢跑7.5公里&#xff0c; 回去洗澡&#xff0c;然后给自己煮了早餐吃完出发时已是早上八点半了。 我在地铁上&#xff0c;中途看了群信息&#xff0c;说要准备港币&#xff0c;…

cache教程 5.分布式节点的通信

0.对原教程的一些见解 其回顾完请求流程就是抽象了两个接口&#xff0c;PeerPicker和PeerGetter。这样操作&#xff0c;读者阅读时可能很难快速明白其含义&#xff0c;不好理解为什么就创建出两个接口&#xff0c;感觉会比较疑惑。原教程的评论中也有讨论这点。 本教程就先不创…