1.简要说明
Nacos提供了作为配置中心的功能,只需要在Nacos的控制台页面添加配置,然后在项目中配置相应的"路径"就好。
主要分为几个步骤:
在Nacos控制台添加配置
在项目引入依赖
配置Nacos上的配置的"路径"
2.Nacos控制台配置说明
配置管理-配置列表,可以看见我们的配置
下图是我添加的一个配置
Nacos的配置的完整名称路径是:命名空间+组Group名+Data Id,类似于项目+包名+类名,这样子可以对配置文件进行较好的分类管理。
命名空间:默认存在一个命名空间public,也可以自己创建
组:在新建配置的时候设置,名字自己随意取
data id:在新建配置的时候设置,data id的值和我们项目中的配置有关,这个后面讲
3.简单实例
3.1创建模块
3.2依赖
<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency>
完整
<dependencies> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> <dependency> <groupId>com.atguigu.springcloud</groupId> <artifactId>cloud-api-commons</artifactId> <version>${project.version}</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <optional>true</optional> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.62</version> </dependency> </dependencies>
3.3配置文件
application.yml
spring:
profiles:
active: dev
bootstrap.yml
server: port: 3377 spring: application: name: nacos-config-client #将会作为注册到注册中心的服务名称 cloud: nacos: discovery: server-addr: localhost:8848 #作为注册中心的Nacos的地址 config: server-addr: localhost:8848 #作为配置中心Nacos的地址 file-extension: yaml #指定yaml格式的配置
为什么这里需要两个配置文件呢,这个data id有关
现在,我们看Data id是怎么形成的
Data id的格式如下 ${prefix}-${spring.profiles.active}.${file-extension}
${prefix}:默认是spring.application.name的值,也可以通过配置项 spring.cloud.nacos.config.prefix
来配置
${spring.profiles.active} 即为当前环境对应的 profile,注意:当 spring.profiles.active
为空时,对应的连接符 -
也将不存在,dataId 的拼接格式变成 ${prefix}.${file-extension},最好不要少,这也就是上面弄了两个配置文件的原因
${file-extension}为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension
来配置。目前只支持 properties
和 yaml
类型。
按照我们的配置,Data Id 也就是 nacos-config-client-dev.yaml
上面的配置,也就是去找地址为 localhost:8848的Nacos,由于我们没有配置命名空间和组,所以找的是默认的命名空间public和默认组DEFAULT_GROUP,Data id是nacos-config-client-dev.yaml的配置
3.4主启动类
package com.atguigu.springcloud; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; /** * @Classname NacosConfigClientMain3377 * @Description TODO * @Date 2021/6/21 0021 下午 3:38 * @Created by jcc */ @SpringBootApplication @EnableDiscoveryClient public class NacosConfigClientMain3377 { public static void main(String[] args) { SpringApplication.run(NacosConfigClientMain3377.class,args); } }
3.5业务类
package com.atguigu.springcloud.alibaba.controller; 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.RestController; @RestController @RefreshScope //动态刷新 通过这个注解实现配置的自动刷新,但我们修改配置了,会自动刷新 public class ConfigClientController { @Value("${config.info}") private String configInfo; //读取我们在Nacos上的配置的内容 config.info @GetMapping("/config/info") public String getConfigInfo() { return configInfo; } }
3.6.在Nacos控制台创建配置
Data id的值一定要对应上面项目中的配置形成的Data id的值
Group采用默认的
配置格式:选择YAML
配置内容:config.info: 帅呀
3.7启动项目
访问http://localhost:3377/config/info,读取到了配置内容
修改配置内容
再次访问
发现自动更新了配置内容
4.自定义命名空间和自定义组
4.1创建命名空间
命名空间-新建命名空间
id自动生成就好
创建成功后
4.2在mysp命名空间下创建配置
选择命名空间为mysp,点击+新增配置
Data id还是之前的不变
Group:MY_GROUP (自定义的组的名称)
配置格式:YAML
配置内容:mysp---MY_GROUP_帅呀
4.3修改项目的配置文件
server: port: 3377 spring: application: name: nacos-config-client #将会作为注册到注册中心的服务名称 cloud: nacos: discovery: server-addr: localhost:8848 #配置Nacos地址 config: server-addr: localhost:8848 #配置中心地址 file-extension: yaml #指定yaml格式的配置 也就是去配置中心3348去找yml配置文件,而application的配置active: dev,有指定了找名字为dev的 namespace: 55b6e10a-d590-4260-83fc-60db57b47f3e group: MY_GROUP
添加了两个配置内容:
namespace: 55b6e10a-d590-4260-83fc-60db57b47f3e 命名空间的id
group: MY_GROUP 组名
这里去找的是id为55b6e10a-d590-4260-83fc-60db57b47f3e的命名空间下,组名为MY_GROUP,data id为nacos-config-client-dev.yaml的配置
4.4重启项目
访问http://localhost:3377/config/info

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?