首页/新闻资讯/正文详情

Spring Cloud Alibaba Nacos配置中心

发布时间:2026/9/24 17:14:49 来源:云帆数科 栏目:资讯中心
Spring Cloud Alibaba Nacos配置中心
一、前言上一节Spring Cloud Alibaba Nacos注册中心记录了Nacos作为注册中心的使用方式这节继续记录下Nacos作为配置中心的使用方式。二、框架搭建新建一个Spring Boot项目artifactId为spring-cloud-alibaba-nacos-config项目的pom内容?xml version1.0 encodingUTF-8?projectxmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersionparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion2.3.2.RELEASE/versionrelativePath/!-- lookup parent from repository --/parentgroupIdcom.wno704/groupIdartifactIdspring-cloud-alibaba-nacos-config/artifactIdversion0.0.1-SNAPSHOT/versionnameAlibaba-Nacos-Config/namedescriptionDemo project for Spring Boot/descriptionpropertiesjava.version1.8/java.versionspring-cloud-alibaba.version2.2.3.RELEASE/spring-cloud-alibaba.version/propertiesdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-config/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-devtools/artifactIdscoperuntime/scopeoptionaltrue/optional/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdoptionaltrue/optional/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scopeexclusionsexclusiongroupIdorg.junit.vintage/groupIdartifactIdjunit-vintage-engine/artifactId/exclusion/exclusions/dependency/dependenciesdependencyManagementdependenciesdependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-alibaba-dependencies/artifactIdversion${spring-cloud-alibaba.version}/versiontypepom/typescopeimport/scope/dependency/dependencies/dependencyManagementbuildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactId/plugin/plugins/build/project因为这节记录的是Nacos作为配置中心的功能所以引入的是spring-cloud-alibaba-nacos-config依赖。三、基本使用3.1 基本配置在项目配置文件application.yml中添加如下配置server:port:8920spring:application:name:config上面配置指定应用端口为8920应用名称为config。接着在resources目录下新建配置文件bootstrap.yml在里面添加如下Nacos config配置必须在bootstrap.yml中配置bootstrap.yml优先级比application.yml高spring:cloud:nacos:config:server-addr:127.0.0.1:8848file-extension:yamlspring.cloud.nacos.config.server-addr配置了Nacos配置中心的地址也可以通过spring.cloud.nacos.server-addr指定它们两个是等价的spring.cloud.nacos.config.file-extension指定待会在Nacos配置中心读取的配置的格式为yaml格式。3.2 nacos配置我们回到Nacos控制台http://localhost:8848/nacos 在配置列表中新建一个配置我们新建了一个my-project.yaml配置dataId为config.yamlgroup为DEFAULT_GROUP它们的具体含义下面会介绍到配置了message: ‘hello alibaba nacos!’创建好后点击发布即可。3.3 测试接着回到我们的项目在com.wno704.alibaba目录下新建controller包然后在该包下新建TestController用于测试配置获取规则RestControllerRefreshScopepublicclassTestController{Value(${message:null})privateStringmessage;GetMapping(message)publicStringgetMessage(){returnthis.message;}}面代码我们从刚刚在Nacos控制台配置的配置文件中获取message配置的值RefreshScope用于刷新配置即我们在Nacos控制台修改了相关配置点击发布后我们的应用能够在不重启的情况下获取到最新的配置。启动项目在http工具中访问http://localhost:8920/message配置获取成功在Nacos控制台中将message值修改为hello nacos config!后发布再次访问http://localhost:8920/message四、获取规则Nacos配置中心通过namespace、dataId和group来唯一确定一条配置。1.namespace即命名空间。默认的命名空间为public我们可以在Nacos控制台中新建命名空间2.dataId即配置文件名称dataId的拼接格式如下${prefix} - ${spring.profiles.active} . ${file-extension}prefix默认为pring.application.name的值也可以通过配置项spring.cloud.nacos.config.prefix来配置spring.profiles.active即为当前环境对应的profile。注意当spring.profiles.active为空时对应的连接符-也将不存在dataId的拼接格式变成p r e f i x . {prefix}.prefix.{file-extension}file-extension为配置内容的数据格式可以通过配置项spring.cloud.nacos.config.file-extension来配置。3.group即配置分组默认为DEFAULT_GROUP可以通过spring.cloud.nacos.config.group配置。所以根据这些规则上面示例中我们的应用名称spring.application.name为configspring.cloud.nacos.config.file-extension的值为yaml没有指定spring.profiles.active于是dataId为config.yaml分组为默认的DEFAULT_GROUP命名空间为默认的public。这就是我们在Nacos控制台中新建配置时的根据。五、配置划分实战Nacos配置中心的namespace、dataId和group可以方便灵活地划分配置。比如我们现在有一个项目需要开发项目名称为emc项目开发人员分为两个组GROUP_A和GROUP_B项目分为三个环境开发环境dev、测试环境test和生产环境prod。假如现在GROUP_A组的组长需要在Nacos中新建一个开发环境的emc项目配置那么他可以这样做5.1 创建命名空间在Nacos控制台中新建一个名称为emc的命名空间新建emc命名空间后如果增加时候不填写命名空间id会生成一个唯一标识该命名空间的命名空间id6d831bba-c695-4653-83de-863aec1edcf6。5.2 创建配置在Nacos控制台中新建一个配置5.3 配置bootstrap.yml最后在config项目的bootstrap.ymlbootstrap.yml配置文件中添加如下配置即可spring:profiles:active:devcloud:nacos:config:server-addr:127.0.0.1:8848file-extension:yamlprefix:confignamespace:6d831bba-c695-4653-83de-863aec1edcf6group:GROUP_A5.4 测试访问http://localhost:8920/message六、配置回滚Nacos中修改配置点击发布后会创建一个对应的历史版本快照我们可以在Nacos控制台的历史版本列表中找到这些快照七、获取多个配置7.1 修改bootstrap.yml除了通过上面的方式指定一个唯一配置外我们还可以同时获取多个配置文件的内容比如将项目的bootstrap.yml内容修改为spring:cloud:nacos:config:server-addr:127.0.0.1:8848extension-configs:-dataId:ext-config-one.yamlgroup:DEFAULT_GROUPrefresh:true-dataId:ext-config-two.yamlgroup:DEFAULT_GROUPrefresh:falsespring.cloud.nacos.config.extension-configs[n].dataId指定多个配置的dataId必须包含文件格式支持properties、yaml或ymlspring.cloud.nacos.config.extension-configs[n].group指定分组spring.cloud.nacos.config.extension-configs[n].refresh是否支持刷新。上面的配置中我们分别从DEFAULT_GROUP中获取了ext-config-one.yaml和ext-config-two.yaml配置内容并且ext-config-one.yaml支持刷新ext-config-two.yaml不支持刷新。注意:没有namespace的配置言外之意就是Nacos目前还不支持多个配置指定不同的命名空间。7.2 增加配置我们在Nacos控制台中新建这两个配置ext-config-one.yaml配置内容ext1: ‘hello’ext-config-two.yaml配置内容ext2: ‘world’7.3 测试在项目的TestController中添加Value(${ext1:null})privateStringext1;Value(${ext2:null})privateStringext2;GetMapping(multi)publicStringmultiConfig(){returnString.format(ext1: %s ext2: %s,ext1,ext2);}启动项目http工具访问http://localhost:8920/multi将ext1的值修改为niceext2的值修改为goodhttp工具访问http://localhost:8920/multi可以看到ext1的值更新了ext2没有更新。八、多配置共享8.1 修改配置多配置共享其实和获取多个文件配置作用差不多下面演示下多配置共享。将bootstrap.yml配置修改为spring:cloud:nacos:config:server-addr:127.0.0.1:8848shared-configs:ext-config-one.yaml,ext-config-two.yamlspring.cloud.nacos.config.shared-configs指定了共享ext-config-one.yaml和ext-config-two.yaml的配置。8.2 测试重启项目http工具访问http://localhost:8920/multi也可以正常获取。可以看到无论是多配置共享还是获取多个配置要完成的事情是一样的不过它们都有各自的局限性。多配置共享无法指定分组、无法指定命名空间、无法配置是否刷新获取多个配置相对较为灵活不过也不能配置命名空间。具体相关的讨论可以参考https://github.com/alibaba/spring-cloud-alibaba/issues/141九、常用配置配置项key默认值说明服务端地址spring.cloud.nacos.config.server-addrDataId前缀spring.cloud.nacos.config.prefixspring.application.nameGroupspring.cloud.nacos.config.groupDEFAULT_GROUPdataID后缀及内容文件格式spring.cloud.nacos.config.file-extensionpropertiesdataId的后缀同时也是配置内容的文件格式目前只支持 properties配置内容的编码方式spring.cloud.nacos.config.encodeUTF-8配置的编码获取配置的超时时间spring.cloud.nacos.config.timeout3000单位为 ms配置的命名空间spring.cloud.nacos.config.namespace常用场景之一是不同环境的配置的区分隔离例如开发测试环境和生产环境的资源隔离等。AccessKeyspring.cloud.nacos.config.access-keySecretKeyspring.cloud.nacos.config.secret-key相对路径spring.cloud.nacos.config.context-path服务端 API 的相对路径接入点spring.cloud.nacos.config.endpoint地域的某个服务的入口域名通过此域名可以动态地拿到服务端地址是否开启监听和自动刷新spring.cloud.nacos.config.refresh.enabledtrue参考链接https://github.com/alibaba/spring-cloud-alibaba/blob/master/spring-cloud-alibaba-examples/nacos-example/nacos-config-example/readme-zh.mdhttps://spring-cloud-alibaba-group.github.io/github-pages/greenwich/spring-cloud-alibaba.html#_spring_cloud_alibaba_nacos_config

相关推荐

Spring Cloud Alibaba Nacos注册中心
Spring Cloud Alibaba Nacos注册中心

一、前言 Nacos是一款集服务发现、服务健康监测、动态配置服务、动态 DNS 服务、服务及其元数据管理于一身的开源软件,这节主要记录Nacos的服务注册发现功能的使用。借助Spring Cloud Alibaba Nacos Discovery,我们可以轻松地使用Spring Cloud编程模型体… · 2026/9/24 17:14:49

【在线五子棋对战】实用工具类模块实现
【在线五子棋对战】实用工具类模块实现

目录 日志类 strftime() 宏封装 声明全局Logger对象 MySQL API封装 Jsoncpp的序列化/反序列化封装 字符串分割封装 读取文件封装 密码模块 二进制(字节)数据转十六进制字符串 生成随机盐 计算密码哈希 密码验证 日志类 日志类完成的功能是对… · 2026/9/24 17:14:49

解构一个嵌入式qt工程
解构一个嵌入式qt工程

这个工程具有一定分析价值, qt 的整体程序完整。 但是该工程是基于Qt4的,而我的构建套件是基于Qt5的 解决版本兼容问题 在.pro中增加Qt模块配置 TEMPLATE = app# =========增加Qt模块,重点!========= QT += core gui widgets networkgreaterThan(QT_MAJOR_VERSION, 4): Q… · 2026/9/24 17:14:41

TCP协议栈管理、文件符表映射机制与TCP资源关闭流程介绍
TCP协议栈管理、文件符表映射机制与TCP资源关闭流程介绍

文章目录 一、进程与内核 1.用户态的Java程序进程 2.内核态的操作系统内核 2.1操作系统 2.1.1内核 二、文件描述符与表引用 1.文件描述符 2.文件描述符表 3.引用比例 三、TCP资源管理与连接维护 1.TCP协议栈 1.1TCB 1.1.1端点 1.1.1.1TCP连接状态 四、Socket引用… · 2026/9/24 17:52:44

基于 Java Spring Boot 的幼儿早教微信小程序设计与实现
基于 Java Spring Boot 的幼儿早教微信小程序设计与实现

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 1. 引言 随着移动互联网的普及和微信生态的快速发展,微信小程序凭借其即用即走、无需下载安装、传播便捷等优势,已成为教育服务领域的重要载体。… · 2026/9/24 17:52:44

视频素材格式转换:多款视频转换工具能力客观记录
视频素材格式转换:多款视频转换工具能力客观记录

自媒体素材整理、课件转码、监控视频归档时,经常遇到视频格式不兼容、平台上传受限的问题。批量转格式、压缩体积、提取音频、转 GIF,不同工具支持的格式种类、批量上限、编码自定义范围差别较大。下文客观记录多款视频转换工具基础能力与使用边界&#… · 2026/9/24 17:52:38

教学反思怎么写才不只是感想:四步各留一处能回查的痕迹
教学反思怎么写才不只是感想:四步各留一处能回查的痕迹

一节课上完,随笔写下几行,往往只是当堂的感受;真正立得住的反思,是每一步都留下了一处日后能翻回来核对的凭据。知学术AIPaperGPT 把这条线看得比字数更重。先要一个框架,让免费智能大纲接手;图表这类素材&… · 2026/9/24 17:52:38

独立站建站平台有哪些?Shopify、WooCommerce和外贸建站方案盘点
独立站建站平台有哪些?Shopify、WooCommerce和外贸建站方案盘点

搜索“独立站建站平台有哪些”的企业,往往已经决定不只依赖第三方平台或社媒入口,而是希望拥有自己的官网、产品展示、询盘或交易阵地。但独立站并不是单一工具,它包括B2B外贸询盘站、跨境电商交易站、品牌展示站、内容型网站和复杂定制系统&… · 2026/9/24 17:52:19

Large Bin Attack
Large Bin Attack

学习 Large Bin Attack,最重要的一点是不要被它的名字吓倒。虽然它属于高级的堆利用技巧,但它的本质其实非常简单:利用 glibc 在维护“有序双向链表”时,缺乏足够的安全检查,从而让我们能在一个任意的内存地址里&#… · 2026/9/24 17:52:19

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程
基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为… · 2026/9/24 0:00:13

1D-CNN时间序列建模实战:从Conv1d原理到工业落地
1D-CNN时间序列建模实战:从Conv1d原理到工业落地

简介:面向时间序列数据建模的一维卷积神经网络完整实现,适合深度学习入门者及需要快速验证时序模型的研究者,能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小,只有3KB,内含3个Python脚… · 2026/9/24 0:00:26

柔软的L:汉语语流中被忽视的舌肌张力控制
柔软的L:汉语语流中被忽视的舌肌张力控制

1. 这个“L”不是字母表里的L,而是舌尖上的L最近在几个方言群和语音教学社群里,反复看到有人发一句:“也说字母L:柔软的长舌”。初看以为是英语发音课笔记,点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码