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

Spring Cloud Alibaba 2025.0.0 配置中心踩坑日记

Spring Cloud Alibaba 2025.0.0 配置中心踩坑日记

从 2021.x 升到 2025.0.0 之后,配置中心的写法全变了。bootstrap.yml 默认关掉、spring.config.import接入方式也换了、Nacos Server 版本还不对齐。踩了一堆坑,整理下来备忘。


环境

组件版本
Spring Boot3.5.16
Spring Cloud2025.0.0
Spring Cloud Alibaba2025.0.0.0
Nacos Server3.0.3
Java17

坑:spring-cloud-starter-bootstrap 和 spring.config.import 不能共存

现象

加了spring-cloud-starter-bootstrap依赖,同时又在application-dev.yml里用spring.config.import导入 Nacos 配置。Nacos 控制台改了配置,服务端也收到了推送,但@RefreshScope的 Bean 不刷新。日志里永远是:

Refresh keys changed: []

涉及的依赖

先说清楚这里涉及哪几个包:

<!-- 这个必须引入,Nacos 配置中心的核心包 --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency><!-- 这个可选,作用是重新打开 Spring Cloud 默认关闭的 bootstrap 上下文 --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bootstrap</artifactId></dependency>

spring-cloud-starter-alibaba-nacos-config这个包内部带了两套加载机制:

  • NacosPropertySourceLocator——走 bootstrap 阶段加载配置。需要spring-cloud-starter-bootstrap打开 bootstrap 上下文才会触发
  • NacosConfigDataLoader——走spring.config.import阶段加载配置。不需要bootstrap,Spring Cloud 2025 默认方式

如果你同时引入上面两个依赖,又在application-dev.yml里配了spring.config.import,两套机制会一起跑

原因

两套机制一起跑,Nacos 配置被加载了两次:

pom.xml 里引入了

触发

无需 bootstrap

拉配置

又拉一次

ContextRefresher 刷新这一份

@ConfigurationProperties 绑的是这一份

spring-cloud-starter-bootstrap
(打开了 bootstrap 上下文)

spring-cloud-starter-alibaba-nacos-config
(自带两套加载器)

bootstrap 阶段
NacosPropertySourceLocator

spring.config.import 阶段
NacosConfigDataLoader

Nacos Server

PropertySource A
挂到 Environment

PropertySource B
又挂到 Environment

刷新事件

Bean 绑定

Nacos 推送配置变更时:

  • NacosContextRefresher→ 刷新 PropertySource A → A 的值确实变了
  • 但你的@ConfigurationPropertiesBean → 绑的是 PropertySource B → B 没变
  • ContextRefresher对比新旧值 → 穿帮了 → 检测不到变化 →Refresh keys changed: []

两条链路各玩各的,刷新了个寂寞。

解决

二选一,只留一条路。

方案 A:只用spring.config.import(推荐)

删掉spring-cloud-starter-bootstrap

<!-- ❌ 删掉 --><!-- <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bootstrap</artifactId> </dependency> --><!-- ✅ 只留这一个 --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency>

application-dev.yml——不要有bootstrap.yml

spring:config:import:-optional:nacos:idle-store-oss-dev.yaml?group=DEFAULT_GROUP&refreshEnabled=truecloud:nacos:config:group:DEFAULT_GROUPserver-addr:127.0.0.1:8848namespace:idlestorediscovery:enabled:truegroup:DEFAULT_GROUPnamespace:idlestoreserver-addr:127.0.0.1:8848

方案 B:只用 bootstrap.yml(老项目过渡用,2025.1.x 之后废弃)

保留两个依赖:

<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bootstrap</artifactId></dependency>

bootstrap.yml

spring:application:name:idle-store-authcloud:nacos:config:server-addr:127.0.0.1:8848namespace:idlestorefile-extension:yamlrefresh-enabled:truediscovery:server-addr:127.0.0.1:8848namespace:idlestore

application-dev.yml——不要写spring.config.import

spring:application:name:idle-store-auth

2025.0.0 的正确打开方式

踩完上面的坑,总结一套能跑的配置模板。

父 pom

<properties><java.version>17</java.version><spring-boot.version>3.5.16</spring-boot.version><spring-cloud.version>2025.0.0</spring-cloud.version><spring-cloud-alibaba.version>2025.0.0.0</spring-cloud-alibaba.version></properties><dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring-boot.version}</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>${spring-cloud-alibaba.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement>

子模块依赖

<!-- Nacos 配置中心 --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency><!-- Nacos 服务发现 --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!-- 不要引入 spring-cloud-starter-bootstrap! -->

配置文件(推荐 spring.config.import 方式)

# application-dev.ymlspring:application:name:your-service-nameconfig:import:-optional:nacos:your-service-name-dev.yaml?group=DEFAULT_GROUP&refreshEnabled=true# 这个前面对应的是 nacos 的>cloud:nacos:config:group:DEFAULT_GROUPserver-addr:127.0.0.1:8848namespace:your-namespacediscovery:enabled:truegroup:DEFAULT_GROUPnamespace:your-namespaceserver-addr:127.0.0.1:8848
# Nacos 里的 your-service-name-dev.yaml —— 放需要动态刷新的业务配置your-property:your-value

代码里绑定配置

@ConfigurationProperties("storage")@Component@RefreshScope// 别忘了@DatapublicclassStorageProperties{privateStringtype;}
http://www.jsqmd.com/news/1159422/

相关文章:

  • 人工蜂鸟算法 AHA 2022版:3种飞行技能与访问表机制的MATLAB/ Python 代码实现
  • STM32与G6D-ASI继电器在直流负载管理中的高效协同设计
  • 基于 Kubernetes 的 GPU 资源调度与成本优化系统实践
  • WordPress网站AI优化:Schema与llms.txt配置实战指南
  • 亨得利官方名表服务中心|最新网点地址及电话权威信息通告(2026年7月更新) - 亨得利官方博客
  • 成都麓湖 / 牧马山别墅半包施工队推荐,成都后80装修队怎么样?
  • 0基础小白如何轻松入门LangChain?一次性搞懂Model与Agent实战指南!
  • ConcurrentHashMap学习
  • Gemini Mac原生App:深度集成macOS的AI工作流引擎
  • 现代AI之父新作:13个大模型实测,检索agent真的可信吗?
  • 重复测量方差分析:SPSS 球形度检验(Mauchly‘s W)与3种校正方法(GG/HF/下限)详解
  • 5分钟解锁专业图表制作:drawio-libs图标库完全指南
  • API Key轮换不是改变量:从分环境到撤销演练的证据链
  • AutoHotkey v2 实战:5个脚本实现文本大小写/驼峰转换与窗口置顶
  • 计算机毕业设计之社团纳新管理系统设计与实现
  • 公证在线办理多久办好?公证材料有啥?
  • 技术、业务、管理:一个30岁前端的十字路口
  • Open WebUI 搭配 Ollama 运行 DeepSeek 的本地 GUI 实战指南
  • 2026年7月最新厦门海沧区新阳街道亨得利官方名表服务中心电话公示 - 亨得利钟表维修中心
  • 【推荐一款免费的企业管理软件】
  • Firefox+Burpsuite+SwitchyOmega黄金组合:Web安全测试抓包环境搭建与配置实战
  • 智能体平台有哪些监控仪表盘?企业级AI Agent全链路可视化与合规监控深度解析
  • 便携式自动粘度测定仪:技术参数与场景应用全解析
  • 三相电压型PWM整流器、PI双闭环+解耦、第四象限、电流反向流动仿真(Simulink仿真实现)
  • 第五人格时间计算:加赛、破译加速与闪现时机详解
  • Claude Fable 5免费试用延期:AI编程助手深度评测与实战指南
  • Windows和Linux快速生成大容量文件的完整指南
  • 线上商城SaaS平台哪家最适合中小企业,AI标配能力正在重塑“适合“的定义
  • 毫秒级响应:源网荷储一体化柜如何实现秒级并离网切换?
  • 基于AD590和uA741的温度测量电路设计与Multisim仿真