尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

Spring Cloud Alibaba Nacos配置中心

发布时间:2026/9/24 17:14:45

资讯中心
01
ARTICLE

Spring Cloud Alibaba Nacos配置中心

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
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。