SpringCloud如何通过Nacos详细实现配置中心流程?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1638个文字,预计阅读时间需要7分钟。
目录:
1.引入依赖
2.配置Bootstrap.yml
3.配置application.yml
4.Controller测试接口
5.Nacos中添加配置信息
6.配置规则
7.理论:dataId的完整格式
8.配置新增:Namespace, Group, DataId讲解
9.实例:三种方案加载配置
目录
- 1、引入依赖
- 2、配置Bootstrap.yml
- 3、配置application.yml
- 4、Controller测试接口
- 在Nacos中添加配置信息
- 匹配规则-理论
- dataId的完整格式
- 配置新增
- Namespace+Group+DatalD讲解
- 实例-三种方案加载配置
- 1、dataId方案
- 2、Group方案
- 3、Namespace方案
1、引入依赖
<dependencies> <!--nacos-config--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency> <!--nacos-discovery--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> <!--web + actuator--> <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> </dependencies>
YML的类别
Nacos同springcloud-config一样,在项目初始化时,要保证先从配置中心进行配置拉取,拉取配置之后,才能保证项目的正常启动。springboot中配置文件的加载是存在优先级顺序的,bootstrap优先级高于application
注意点 在Cloud高版本中(例如:2021.0.3),你可能还需要引入以下依赖
<!-- bootstrap 启动器:解决Cloud高版本下不先加载bootstrap.properties问题 see github issue:github.com/alibaba/spring-cloud-alibaba/issues/1994 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bootstrap</artifactId> </dependency>
2、配置Bootstrap.yml
# nacos配置
server:
port: 3377spring:
application:
name: nacos-config-client
cloud:
nacos:
discovery:
server-addr: localhost:8848 #Nacos服务注册中心地址
config:
server-addr: localhost:8848 #Nacos作为配置中心地址
file-extension: yaml #指定yaml格式的配置
group: TEST_GROUP
namespace: ea7be215-37d0-4175-958c-a8af3545f115
# ${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}
共享配置 & 多配置文件
spring:
application:
name: nacos-config-multi
main:
allow-bean-definition-overriding: true
cloud:
nacos:
username: ${nacos.username}
password: ${nacos.password}
config:
server-addr: ${nacos.server-addr}
namespace: ${nacos.namespace}
# 用于共享的配置文件
shared-configs:
- data-id: common-mysql.yaml
group: SPRING_CLOUD_EXAMPLE_GROUP- data-id: common-redis.yaml
group: SPRING_CLOUD_EXAMPLE_GROUP- data-id: common-base.yaml
group: SPRING_CLOUD_EXAMPLE_GROUP# 常规配置文件
# 优先级大于 shared-configs,在 shared-configs 之后加载
extension-configs:
- data-id: nacos-config-advanced.yaml
group: SPRING_CLOUD_EXAMPLE_GROUP
refresh: true- data-id: nacos-config-base.yaml
group: SPRING_CLOUD_EXAMPLE_GROUP
refresh: true
3、配置application.yml
spring:
profiles:
active: dev # 表示开发环境
4、Controller测试接口
/** * 配置客户端控制器 * * @author LiJunYi * @RefreshScope 支持Nacos的动态刷新功能 */ @RestController @RefreshScope public class ConfigClientController { @Value("${config.info}") private String configInfo; @GetMapping("/config/info") public String getConfigInfo() { return configInfo; } }
在Nacos中添加配置信息
匹配规则-理论
之所以需要配置 spring.application.name ,是因为它是构成 Nacos 配置管理 dataId 字段的一部分。
dataId的完整格式
${prefix}-${spring.profile.active}.${file-extension}
1、prefix 默认为 spring.application.name 的值,也可以通过配置项spring.cloud.nacos.config.prefix来配置。
2、spring.profile.active即为当前环境对应的 profile。注意:当spring.profile.active为空时,对应的连接符 – 也将不存在datald的拼接格式变成${prefix}.${file-extension}
3、file-exetension 为配置内容的数据格式, 可以通过配置项spring.cloud .nacos.config.file-extension来配置。 目前只支持properties和yaml类型。
最后公式:
配置新增

