尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Nacos 新版配置指南(Spring Cloud Alibaba 2023.x)

Nacos 新版配置指南(Spring Cloud Alibaba 2023.x) Nacos 新版配置指南Spring Cloud Alibaba 2023.x适用版本Spring Boot 3.2.x Spring Cloud 2023.0.3 Spring Cloud Alibaba 2023.0.3.2一、新版与旧版的核心区别对比项旧版bootstrap 机制新版2023.x配置加载入口bootstrap.ymlspring-cloud-starter-bootstrapapplication.ymlspring.config.import配置中心依赖必须引入spring-cloud-starter-bootstrap无需 bootstrap 依赖原生 Config Data 机制不存在配置时直接启动失败支持optional:前缀优雅降级二、新版配置写法1. 标准写法server:port:8083spring:application:name:system-servicecloud:nacos:server-addr:192.168.145.132:8848# 顶层公共属性discovery 和 config 共享discovery:namespace:simple-devconfig:namespace:simple-devfile-extension:ymlconfig:import:-optional:nacos:${spring.application.name}.yml要点说明spring.cloud.nacos.server-addr放在nacos顶层作为公共默认值discovery和config都会继承若各自下面单独配置则覆盖公共值。spring.config.import是新版加载 Nacos 配置的唯一入口optional:前缀表示 Nacos 上没有该配置文件时不报错、正常启动。import支持 URL 参数nacos:dataId?refreshEnabledtruegroupDEFAULT_GROUP。三、配置覆盖逻辑本地 vs Nacos1. 默认行为Nacos 覆盖本地启动阶段spring.config.import中后导入的 PropertySource 优先级高Nacos 配置覆盖本地application.yml同名属性。运行阶段Nacos 配置变更推送后动态刷新Nacos 的 PropertySource 会重新以高优先级插入Environment本地同名属性持续被覆盖。import顺序只在启动瞬间有效无法阻止运行时覆盖。2. 让本地覆盖 Nacosoverride-none: truespring:cloud:nacos:config:override-none:true含义本地已存在的属性Nacos 不覆盖本地没有的属性由 Nacos 补充。启动阶段和运行时动态刷新两个阶段都生效这是唯一可靠的本地优先方案。3. 相关开关一览配置项默认值说明spring.cloud.nacos.config.override-nonefalsetrue Nacos 不覆盖本地已存在的属性spring.cloud.nacos.config.allow-overridetruefalse Nacos 强制优先任何本地配置都无法覆盖spring.cloud.nacos.config.override-system-propertiesfalsetrue Nacos 可覆盖 JVM 系统属性-D参数注意override-none在旧的 bootstrap 机制下需要在Nacos 服务端配置才生效在新版spring.config.import机制下写在客户端本地application.yml即可生效。四、动态刷新importURL 加参数optional:nacos:${spring.application.name}.yml?refreshEnabledtrue或在config下设置refresh-enabled: true默认开启。需要运行时刷新的 Bean 加RefreshScopeConfigurationProperties绑定的类天然支持刷新。Value注入的属性必须配合RefreshScope才能刷新。五、官方参考链接资料链接Issue #39982023.0.1.3 版本接入 Nacos 配置中心参数兼容性问题说明官方https://github.com/alibaba/spring-cloud-alibaba/issues/3998Issue #3915新版serverAddr公共配置 spring.config.import写法官方维护者回复https://github.com/alibaba/spring-cloud-alibaba/issues/3915Issue #3943server-addr报 serverAddrnull地址格式/缩进错误https://github.com/alibaba/spring-cloud-alibaba/issues/3943Issue #3969同类问题NacosDiscoveryProperties.serverAddr为 nullhttps://github.com/alibaba/spring-cloud-alibaba/issues/3969官方文档2023.x 中文Nacos Config 进阶指南https://github.com/spring-cloud-alibaba-group/spring-cloud-alibaba-group.github.io/blob/main/src/content/docs/2023/zh-cn/user-guide/nacos/advanced-guide.mdSpring Cloud Alibaba 官网首页https://sca.aliyun.com/六、2023.0.1.3 版本不兼容说明官方 Issue #3998官方说明https://github.com/alibaba/spring-cloud-alibaba/issues/3998适用场景升级到 2023.0.1.3 及以上版本时1. 背景2023.0.1.3 版本对 Nacos 配置中心接入方式做了不兼容变更官方说明中对升级过程中遇到的兼容性问题进行了致歉并明确了标准用法。2. 统一标准用法spring.config.import导入单个配置spring:config:import:nacos:example.yml导入多个配置spring:config:import:-nacos:example.yml-nacos:example2.yml3. 已废弃需迁移的旧方式旧方式说明spring.application.namefile-extension拼接最初版本按应用名自动拼接 dataIdshare-configs共享配置导入extension-configs扩展配置导入以上方式在 2023.0.1.3 中已被删除需统一迁移到spring.config.import。4. 模块拆分2023.0.1.3 将spring-cloud-starter-alibaba-nacos-config拆分为spring-alibaba-nacos-config仅依赖 Spring Boot支持在非 Spring Cloud 应用中独立使用spring-cloud-starter-alibaba-nacos-config仅保留依赖 Spring Cloud 的组件5. 新能力新增NacosConfig、NacosConfigListener注解提供配置注入与变更回调能力2023.0.3.3 版本支持 Druid 连接池运行期无损轮转注意事项部分内容由AI生成如有不对欢迎指正
返回列表