Nacos | 三种方式的配置中心,整合Springboot3.x + yaml文件完成 0错误 自动刷新(亲测无误)

article/2025/8/28 1:00:26

目录

@Value+@RefreshScope

导入配置依赖

启动类 添加 @EnableDiscoveryClient

控制器

编写 yaml 文件

创建 Nacos Data Id

项目启动问题

 测试

@ConfigurationProperties 无感自动刷新

 导入配置依赖

启动类 添加 @EnableDiscoveryClient

控制器

Nacos DataID 模板映射

编写 yaml 文件

创建 Nacos Data Id

测试

NacosConfigManager

配置监听

启动类配置



@Value+@RefreshScope

导入配置依赖

<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency>

启动类 添加 @EnableDiscoveryClient

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;// 开启服务发现
@EnableDiscoveryClient
@SpringBootApplication
public class UserMainApplication {public static void main(String[] args) {SpringApplication.run(UserMainApplication.class, args);}
}

控制器

import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
// 添加 @RefreshScope 注解,使得配置能够自动刷新
@RefreshScope
public class UserController {// 读取配置@Value("${users.timeout}")String usersTimeout;@Value("${users.auto-confirm}")String usersAutoConfirm;@GetMapping("/config")public String config() {return "users.timeout=" + usersTimeout + ",users.auto-confirm=" + usersAutoConfirm;}}

编写 yaml 文件


server:port: 8000
spring:# 这里是要导入的 Nacos DataId 的配置文件名称config:import:- nacos:service-users.yaml# 配置应用名称application:name: service-users# 配置注册中心地址与配置的IPcloud:nacos:discovery:server-addr: 127.0.0.1:8848config:server-addr: 127.0.0.1:8848

创建 Nacos Data Id

users: timeout: 30minauto-confirm: 7d

项目启动问题

解决方法是添加一个import-check


server:port: 8000
spring:# 这里是要导入的 Nacos DataId 的配置文件名称config:import:- nacos:service-users.yaml# 配置应用名称application:name: service-users# 配置注册中心地址与配置的IPcloud:nacos:discovery:server-addr: 127.0.0.1:8848config:server-addr: 127.0.0.1:8848# 这里添加一个就行了import-check:enabled: false

 测试

http://localhost:8000/config

@ConfigurationProperties 无感自动刷新

 导入配置依赖

<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency>

启动类 添加 @EnableDiscoveryClient

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;// 开启服务发现
@EnableDiscoveryClient
@SpringBootApplication
public class UserMainApplication {public static void main(String[] args) {SpringApplication.run(UserMainApplication.class, args);}
}

控制器

import com.jkglxt.users.yaml.Users;
import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class UserController {private UserServiceImpl userService;private Users users;@Autowiredpublic UserController(UserServiceImpl userService, Users users) {this.userService = userService;this.users = users;}@GetMapping("/config")public String config() {return "users.timeout=" + users.getTimeout() + ",users.auto-confirm=" + users.getAutoConfirm();}
}

Nacos DataID 模板映射

创建 yaml.Users类

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
@Component // 这里必须使用@Component注解,否则无法自动装配
@ConfigurationProperties(prefix = "users") // 配置批量绑定,这里的 users 则是Date ID 的前缀
public class Users {// 读取配置String timeout;String autoConfirm;}

编写 yaml 文件


server:port: 8000
spring:# 这里是要导入的 Nacos DataId 的配置文件名称config:import:- nacos:service-users.yaml# 配置应用名称application:name: service-users# 配置注册中心地址与配置的IPcloud:nacos:discovery:server-addr: 127.0.0.1:8848config:server-addr: 127.0.0.1:8848

创建 Nacos Data Id

测试

http://localhost:8000/config

NacosConfigManager

配置监听

启动类配置

import com.alibaba.cloud.nacos.NacosConfigManager;
import com.alibaba.nacos.api.config.ConfigService;
import com.alibaba.nacos.api.config.listener.Listener;
import org.springframework.boot.ApplicationRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.context.annotation.Bean;import java.util.concurrent.Executor;
import java.util.concurrent.Executors;// 开启服务发现
@EnableDiscoveryClient
@SpringBootApplication
public class UserMainApplication {public static void main(String[] args) {SpringApplication.run(UserMainApplication.class, args);}// 监听Nacos的配置变化@BeanApplicationRunner applicationListener(NacosConfigManager nacosConfigManager) {return args -> {ConfigService configService = nacosConfigManager.getConfigService();configService.addListener("service-users.yaml","DEFAULT_GROUP", new Listener() {@Overridepublic Executor getExecutor() {return Executors.newFixedThreadPool(4);}@Overridepublic void receiveConfigInfo(String configInfo) {System.out.println("Nacos配置变化:" + configInfo);}});System.out.println("Nacos配置变化监听");};};}
Nacos配置变化监听
2025-05-30T00:38:41.476+08:00  INFO 30312 --- [service-users] [           main] c.a.c.n.refresh.NacosContextRefresher    : [Nacos Config] Listening config: dataId=service-users.yaml, group=DEFAULT_GROUP
2025-05-30T00:38:51.491+08:00  INFO 30312 --- [service-users] [listener.task-0] c.a.c.n.refresh.NacosContextRefresher    : [Nacos Config] Receive Nacos config change: dataId=service-users.yaml, group=DEFAULT_GROUP
Nacos配置变化:users: timeout: 300minauto-confirm: 70d
2025-05-30T00:38:51.535+08:00  INFO 30312 --- [service-users] [listener.task-0] c.a.c.n.c.NacosConfigDataLoader          : [Nacos Config] Load config[dataId=service-users.yaml, group=DEFAULT_GROUP] success
2025-05-30T00:38:51.685+08:00  INFO 30312 --- [service-users] [listener.task-0] o.s.c.e.event.RefreshEventListener       : Refresh keys changed: [users.auto-confirm, users.timeout]
2025-05-30T00:39:00.870+08:00  INFO 30312 --- [service-users] [listener.task-0] c.a.c.n.refresh.NacosContextRefresher    : [Nacos Config] Receive Nacos config change: dataId=service-users.yaml, group=DEFAULT_GROUP
Nacos配置变化:users: timeout: 30minauto-confirm: 7d
2025-05-30T00:39:00.911+08:00  INFO 30312 --- [service-users] [listener.task-0] c.a.c.n.c.NacosConfigDataLoader          : [Nacos Config] Load config[dataId=service-users.yaml, group=DEFAULT_GROUP] success
2025-05-30T00:39:01.048+08:00  INFO 30312 --- [service-users] [listener.task-0] o.s.c.e.event.RefreshEventListener       : Refresh keys changed: [users.auto-confirm, users.timeout]


-- Thank you --


http://www.hkcw.cn/article/eRkYBIifTf.shtml

相关文章

[嵌入式实验]实验五:freeRTOS

一、实验目的 熟悉开发环境在开发板上通过freeRTOS进行LED控制 二、实验环境 硬件&#xff1a;STM32开发板、CMSIS-DAP调试工具 软件&#xff1a;STM32CubeMX软件、ARM的IDE&#xff1a;Keil C51 三、实验内容 1.实验原理 freeRTOS是一种专门设计的嵌入式实时操作系统&…

【Unity】 HTFramework框架(六十六)缺省的运行时组件检视器

更新日期&#xff1a;2025年5月29日。 Github 仓库&#xff1a;https://github.com/SaiTingHu/HTFramework Gitee 仓库&#xff1a;https://gitee.com/SaiTingHu/HTFramework 索引 一、缺省的运行时组件检视器1.自定义运行时组件检视器 二、使用缺省的运行时组件检视器1.定义组…

Ollama v0.8.0 发布,支持通过工具调用进行流式响应!

在 2025 年 5 月 29 日的 AI 技术浪潮中&#xff0c;实时交互性和高效性成为 AI 应用的核心需求。Ollama 作为一个开源的大型语言模型服务器&#xff0c;持续更新以满足开发者需求。Ollama v0.8.0 的发布特别引入了支持通过工具调用进行流式响应的功能&#xff0c;这一更新引发…

LVS+Keepalived 高可用群集

目录 一、 Keepalived 双机热备核心技术 1.1 Keepalived 架构与 VRRP协议 1.2 双机热备配置深度优化 二、 LVSKeepalived 高可用负载均衡架构 2.1 系统架构设计 2.2 LVS集成配置详解 三、 关键技术与疑难解析 3.1 DR模式 ARP 仰制机制 3.2 健康检查策略优化 四、 企业…

python + vscode 开发环境搭建

一、下载安装Python Python 官网链接Welcome to Python.org 二、Python3.12.7安装 三、Python虚拟环境 开发编译器使用Vscode 1、打开VsCode&#xff0c;键盘输入ctrl shift p 点击完了会在文件夹目录下出现一个.venv的路径。 虚拟环境的作用是隔离不同项目的 Python 环境…

[ Qt ] | QRadioButton和QCheckBox的使用

目录 QRadioButton 常用属性 clicked(bool)信号、pressed信号、released信号 小项目 QRadioButton QRadioButton是一个单选按钮&#xff0c;也是继承自QAbstractButton(继承自QWidget) 常用属性 checkable 是否能选中 checked 是否已经被选中 autoExclusive 是否排…

关于无法下载Qt离线安装包的说明

不知道出于什么原因考虑&#xff0c;Qt官方目前不提供离线的安装包下载&#xff0c;意味着网上各种文章提供的各种下载地址都失效了&#xff0c;会提示Download from your IP address is not allowed&#xff0c;当然目前可以在线安装&#xff0c;但是据说只提供了从5.15开始的…

github双重认证怎么做

引言 好久没登陆github了&#xff0c; 今天登陆github后&#xff0c;提醒进行2FA认证。 查看了github通知&#xff0c;自 2023 年 3 月起&#xff0c;GitHub 要求所有在 GitHub.com 上贡献代码的用户启用一种或多种形式的双重身份验证 (2FA)。 假如你也遇到这个问题&#xf…

多部手机连接同一wifi的ip一样吗?

在家庭和办公环境中&#xff0c;多台手机同时连接同一个WiFi路由器已成为常态。不少用户会产生疑问&#xff1a;这些设备的IP地址会相同吗&#xff1f;下面就一起来了解一下吧。 一、多部手机连接同一WiFi的IP‌一样吗 多部手机连接同一WiFi时的IP地址是否相同&#xff0c;需要…

实验设计与分析(第6版,Montgomery)第5章析因设计引导5.7节思考题5.7 R语言解题

本文是实验设计与分析&#xff08;第6版&#xff0c;Montgomery著&#xff0c;傅珏生译) 第5章析因设计引导5.7节思考题5.7 R语言解题。主要涉及方差分析&#xff0c;正态假设检验&#xff0c;残差分析&#xff0c;交互作用图&#xff0c;等值线图。 dataframe <-data.frame…

如何打造一份出色的技术文档?

文章目录 每日一句正能量前言一、明确文档的目标和受众二、合理规划文档结构三、注重内容的清晰性和准确性四、持续更新和优化文档五、实用工具推荐六、案例分享示例&#xff1a;如何使用Python编写一个简单的Web应用引言背景知识安装和配置使用指南高级用法常见问题参考文献 七…

记一次 Starrocks be 内存异常宕机

突发性 be 内存飙高&#xff0c;直至被系统 kill 掉&#xff0c;be 内存如下&#xff1a;其中 starrocks_be_update_mem_bytes 指标打满&#xff0c;重启也是如此 [rootlocalhost bin]# curl -XGET -s http://192.168.1.49:8040/metrics | grep "^starrocks_be_.*_mem_b…

阿里云服务器邮件发送失败(dail tcp xxxx:25: i/o timeout)因为阿里云默认禁用 25 端口

最近在测试发送邮件的功能&#xff0c;发现了一个奇怪的问题&#xff0c;同样的 docker 镜像&#xff0c;在本地跑起来是可以正常发送邮件的&#xff0c;但是在阿里云的服务器上跑&#xff0c;就会报错 i/o timeout。 排查了一圈发现&#xff0c;原来是阿里云的操作&#xff0…

什么叫做回表?

指的是在Mysql中使用非聚簇索引&#xff0c;也就是使用二级索引进行作为条件进行查询时&#xff0c;查询了除索引之外的数据&#xff0c;需要根据获得的主键去聚簇索引&#xff0c;查询其他的所需的数据。 有表格&#xff08;id,name,age&#xff09;,进行查询select * from w…

pikachu靶场通关笔记08 XSS关卡04-DOM型XSS

目录 一、XSS原理 二、DOM型XSS 三、源码分析 1、进入靶场 2、XSS探测 3、源码分析 四、渗透实战 1、Payload1 2、Payload2 3、Payload3 本系列为通过《pikachu靶场通关笔记》的XSS关卡(共10关&#xff09;渗透集合&#xff0c;通过对XSS关卡源码的代码审计找到XSS风…

Python打卡第39天

浙大疏锦行 作业&#xff1a; """ DAY 39 图像数据与显存 本节主要介绍深度学习中的图像数据处理和显存管理。 """import torch import torch.nn as nn import torch.nn.functional as F import torchvision import torchvision.transforms as…

SQLite 中文写入失败问题总结

SQLite 中文写入失败问题总结与解决方案 在 Windows 下使用 C 操作 SQLite 数据库时&#xff0c;中文字段经常出现 写入成功但内容显示为 BLOB 或 乱码 的问题。根本原因在于 SQLite 要求字符串以 UTF-8 编码 存储&#xff0c;而默认的 std::string 中文通常是 GB2312/ANSI 编…

63、【OS】【Nuttx】任务休眠与唤醒:sleep

背景 之前的 blog 分析了 Nuttx 编码规范 62、【OS】【Nuttx】编码规范解读&#xff08;十&#xff09; 接下来继续分析下 Nuttx OS 的一个核心功能&#xff0c;任务休眠与唤醒 任务休眠 先来看任务休眠&#xff0c;关键函数 sleep&#xff0c;sleep函数是 C 标准库中的一个…

PostgreSQL学会如何建表

开始使用PostgreSQL之前&#xff0c; 上一节我们说了怎样安装它。 PostgreSQL可能已经安装到你的电脑上了,安装后postgre服务默认在电脑开机时运行启动。 一.了解PostgreSQL的运行 PostgreSQL使用一种客户端/服务器&#xff08;C/S&#xff09;模型。 和其他典型的客户端/服务…

Wirtinger Flow算法的matlab实现和python实现

文章目录 1. 数学模型2. Wirtinger Flow 算法2.1. 光谱初始化方法2.2. Wirtinger梯度下降 3. 算法实现3.1. Matlab实现3.2. Python实现 参考文献 1. 数学模型 观测数学模型可由下面公式给出 y ∣ A x ∣ 2 y |Ax|^2 y∣Ax∣2 其中 x ∈ C n x\in\mathbb C^{n} x∈Cn&#x…