前言:
本篇博客主要说明使用nacos做服务配置中心,基础配置的实现。
1.新建一个服务模块,在pom.xml文件中引入以下依赖:
<!--springcloud alibb nacos配置中心依赖 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>2.2.3.RELEASE</version>
</dependency>
<!--springcloud alibb nacos依赖 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>2.2.3.RELEASE</version>
</dependency>
2.新建两个配置文件boostrap.yml和application.yml
boostrap.yml
:
server:
port: 7777
spring:
application:
name: nacos_config_service
cloud:
nacos:
discovery:
server-addr: localhost:8848 #服务注册中心地址
config:
server-addr: localhost:8848 #配置中心地址
file-extension: yaml #指定yaml格式的配置
#nacos分布式配置中心dataId的完整格式:${prefix}-${spring.profiles.active}.${file-extension}
#dataId:nacos_config_service-dev.yaml
application.yml
:
spring:
profiles:
active: dev
这么做的原因是:
3.在nacos上新建一个配置文件
特别注意的是,配置文件的dataId是有格式要求的,如果不按照官方要求的格式来进行命名的话,将会出现识别不了的错误。官方给出的命名格式如下:
在 Nacos Spring Cloud 中,dataId 的完整格式如下:
${prefix}-${spring.profiles.active}.${file-extension}
prefix
默认为 spring.application.name 的值,也可以通过配置项spring.cloud.nacos.config.prefix来配置。spring.profiles.active
即为当前环境对应的 profile,详情可以参考 Spring Boot文档。 注意:当spring.profiles.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成 p r e f i x . {prefix}. prefix.{file-extension}file-exetension
为配置内容的数据格式,可以通过配置项
spring.cloud.nacos.config.file-extension 来配置。目前只支持 properties 和 yaml类型。
官方参考文档地址为:https://nacos.io/zh-cn/docs/quick-start-spring-cloud.html
在本案例中,dataId如下所示:
注意:
这里有一个小细节,如果是yaml类型的配置文件,后缀名必须是.yaml
而不能是.yml
,这点nacos还没有能够识别到两种格式。
根据格式要求给配置文件命名并发布:
创建成功后如下所示:
4.编写控制器代码,这里是读取nacos上配置文件的信息,通过 Spring Cloud 原生注解 @RefreshScope 实现配置自动更新:
@RestController()
@RefreshScope
public class ConfigController {
@Value("${config.info}")
private String configInfo;
@GetMapping("getConfigInfo")
public String getConfigInfo(){
return configInfo;
}
}
5.启动服务,访问http://localhost:7777/getConfigInfo,成功获取到配置文件上的信息:
6.修改nacos上配置文件版本号version为2.0:
7.再次访问http://localhost:7777/getConfigInfo:
发现服务读取的配置文件版本号version已变成了2.0,说明已经实现了配置修改后动态刷新
至此,SpringCloud Alibaba微服务中Nacos分布式配置中心基础配置已成功实现!