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

Nacos 配置热更新:Spring Boot Bean 自动获取最新配置

Nacos 配置热更新:Spring Boot Bean 自动获取最新配置

  • nacos 配置相关
    • 命名空间
    • 配置列表
  • 代码
    • demo
    • 配置文件 bootstrap.yml
  • 测试
  • 注释事项
    • 版本兼容问题
    • 问题解决方法:
      • 依赖的版本
      • 关闭兼容错误提示

前言:简单记录下nacos的动态刷新获取以及版本兼容问题

nacos 配置相关

命名空间

在这里插入图片描述

配置列表

一些简单的配置

在这里插入图片描述

在这里插入图片描述

代码

demo

在这里插入图片描述

package com.ruoyi.web.mytest.nacos;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.RequestMapping;
import org.springframework.web.bind.annotation.RestController;/*** 实现功能测试:nacos的配置文件修改了数据,这个bean就会动态的刷新获取。** 涉及到的代码:添加了一个 bootstrap.yml 的配置类,然后nacos再添加一个配置来测试--命名空间和配置管理那里** @author lujinhong* @since 2025-08-14*/
@RefreshScope //nacos 配置刷新
@RestController
@RequestMapping("/nacos")
public class NacosTest {/*** 问题:为什么 ${user.name} 能拿到nacos服务端的配置数据。** Spring Cloud Alibaba Nacos Config 会在Spring Boot 启动的最早阶段,在加载到bootstrap.yml时,* 去 Nacos 服务器加载对应 Data ID 的配置文件,然后把这些配置项放进 Spring Environment 里,* 而且优先级比本地 application.yml 高。** @Value("${user.name}") 能拿到 Nacos 的值,* 是因为 Nacos 配置会在启动时注入到 Spring Environment 里,* 而 @Value 从 Environment 取值,不管值来自本地文件、远程配置还是系统变量,只要名字匹配就能取到*/@Value("${user.name}")private String userName;@GetMapping("/user")public String getUserName(){System.err.println("获取nacos中的user.name的值:" + userName);return "获取nacos中的user.name的值:" + userName;}}

配置文件 bootstrap.yml

在这里插入图片描述


# bootstrap.yml 加载时机比 application.yml 快
spring:application:name: demo-servicecloud:nacos:discovery:server-addr: 19xxxxxxxxx9:8848namespace: test_ruoyigroup: ljh_ruoyi-groupconfig:server-addr: 19xxxxxxxxx9:8848namespace: test_ruoyigroup: ljh_ruoyi-groupfile-extension: ymlcompatibility-verifier:enabled: false

测试

在这里插入图片描述

注释事项

版本兼容问题

我这个是使用若依框架来测试的,框架版本和cloud版本不一样,因为使用 @RefreshScope 这个动态获取数据,需要用到【org.springframework.cloud.context.config.annotation.RefreshScope;】这个依赖。

【@RefreshScope 是 Spring Cloud 提供的注解,用来让 Spring 管理的 Bean 支持动态刷新配置】

Description: Your project setup is incompatible with our requirements due to following reasons:- Spring Boot [2.5.15] is not compatible with this Spring Cloud release train Action: - Consider applying the following actions:

在这里插入图片描述

问题解决方法:

主要记录的就是这个版本兼容问题,用的是这些依赖

依赖的版本

        <!-- nacos 配置中心--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId><version>2021.1</version></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bootstrap</artifactId><version>3.0.1</version></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId><version>2021.1</version></dependency>

关闭兼容错误提示

如果在启动的时候一直说版本不一样,如:

Spring Cloud 在启动时,会默认 检查 Spring Boot 和 Spring Cloud 版本是否兼容,如果不兼容就会抛出错误
(比如之前的 “Spring Boot [2.5.15] is not compatible with this Spring Cloud release train”)

spring.cloud.compatibility-verifier.enabled: false 是 Spring Cloud 的兼容性验证开关,在配置文件把它关闭就行了。

http://www.dtcms.com/a/331339.html

相关文章:

  • 【21-倾斜数据集的误差指标】
  • 金融风控实战:从数据到模型的信用评分系统构建全解析
  • 使用马尔可夫链如何解码、预测股市模式
  • 西门子PLC通过稳联技术EtherCAT转Profinet网关连接baumuller伺服器的配置案例
  • ThreadPoolExecutor 最佳实践
  • 8月AI面试工具测评:破解规模化招聘难题
  • 哈希表特性与unordered_map/unordered_set实现分析
  • 风电功率预测实战:从数据清洗到时空建模​​
  • 从单机到分布式:用飞算JavaAI构建可扩展的TCP多人聊天系统
  • 大规模分布式光伏并网后对电力系统的影响
  • 用SQL实现对DuckDB rusty_sheet插件批量测试
  • 前端-vue全局路由守卫的详情
  • 地测管理部绩效考核关键指标与地质数据分析
  • 如果未来出现了意识移植技术,如何确保移植后的意识是原本的意识而不是复制了一份
  • C++-setmap详解
  • 无人机图传模块——智能飞行的关键技术
  • 解锁AI潜能:五步写出让大模型神级指令
  • Cloudflare Tunnels穿透ssh
  • 51单片机-驱动LED模块教程
  • 【C#】Region、Exclude的用法
  • 无需公钥的无损加密解密
  • 深入详解C语言数组:承上启下——从C语言数组基础到数据结构衔接
  • 码上爬第八题【协程+ob混淆】
  • 【Java虚拟机】JVM相关面试题
  • 2025天府杯数学建模C题
  • 2025天府杯数学建模A题分析
  • 智能门锁:安全与便捷的现代家居入口
  • 第1节 从函数到神经网络:AI思路的逆袭之路
  • Mybatis学习笔记(八)
  • VS2022 C++生成和调用DLL动态链接库