1.Nacos配置中心
1.1 拉取配置
Nacos Config 目前提供了三种配置能力从 Nacos 拉取相关的配置:
- A: 通过 spring.cloud.nacos.config.shared-dataids 支持多个共享 Data Id 的配置
- B: 通过 spring.cloud.nacos.config.ext-config[n].data-id 的方式支持多个扩展 Data Id 的配置
- C: 通过内部相关规则(应用名、应用名+ Profile )自动生成相关的 Data Id 配置
当三种方式共同使用时,他们的一个优先级关系是: A < B < C
shared-dataids 方式
下面配置会拉取data-id 为 application-dev.yml 的配置
spring:
application:
# 应用名称
name: ruoyi-gen
profiles:
# 环境配置
active: dev
cloud:
nacos:
discovery:
# 服务注册地址
server-addr: @vm.host@:8848
config:
# 配置中心地址
server-addr: @vm.host@:8848
# 配置文件格式
file-extension: yml
# 共享配置
shared-configs:
- application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
extension-configs方式
spring:
cloud:
nacos:
config:
name: test.yml
group: DEFAULT_GROUP
server-addr: 127.0.0.1:8848
extension-configs:
- dataId: test01.yml
group: group_01
- dataId: test02.yml
group: group_02
refresh: false
自动生成相关的 Data Id 配置
不仅仅加载了以 dataId 为 {file-extension:properties } 为前缀的基础配置,还加载了 dataId 为 {profile}.${file-extension:properties } 的基础配置。
举例:我有一个ruoyi-gen服务,会自动加载ruoyi-gen.yml和ruoyi-gen-dev.yml配置文件
1.2 namespace
nacos中配置的命名空间
| 命名空间名称 | 命名空间ID | 描述 | 配置数 |
|---|---|---|---|
| public(保留空间) | 9 | ||
| prod | 66745c37-1f31-4af3-8b48-3b4685e630a4 | 生产环境命名空间 | 9 |
| test | adc84052-f305-4434-a153-0b63b07d11ee | 测试环境命名空间 | 9 |
| dev | b6b06451-8059-4d0a-99e7-bd90a271ca4a | 开发环境命名空间 | 9 |
dev命名空间下的配置文件:
| Data Id | Group | 归属应用 | 操作 | |||||
|---|---|---|---|---|---|---|---|---|
| application-dev.yml | DEFAULT_GROUP | 详情 | 示例代码 | 编辑 | 删除 | |||
| ruoyi-gen-dev.yml | DEFAULT_GROUP | 详情 | 示例代码 | 编辑 | 删除 |
举例使用dev命名空间的配置:
spring:
application:
# 应用名称
name: ruoyi-gen
profiles:
# 环境配置
active: dev
cloud:
nacos:
discovery:
# 服务注册地址
server-addr: @vm.host@:8848
config:
namespace: b6b06451-8059-4d0a-99e7-bd90a271ca4a #命名空间Id
# 配置中心地址
server-addr: @vm.host@:8848
# 配置文件格式
file-extension: yml
# 共享配置
shared-configs:
- application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
该配置必须放在 bootstrap.properties 文件中。
在没有明确指定 ${spring.cloud.nacos.config.group} 配置的情况下, 默认使用的是组 DEFAULT_GROUP 。如果需要自定义 Group,可以通过以下配置来实现:
spring.cloud.nacos.config.group=YOUR_GROUP_NAME
1.3 本地配置替换外部配置
在外部配置中加上如下配置:
spring:
cloud:
config:
allow-override: true #这个配置项允许你的本地配置,覆盖从Spring Cloud Config Server获取的配置。
override-none: true
override-system-properties: false # 此配置决定了Spring Cloud Config客户端获取的配置是否能覆盖Java系统属性(通过-D参数设置的属性)
本地配置的属性就可以覆盖外部配置的属性了
1.4 @RefreshScope
如果一个bean被标注@RefreshScope后,当配置中心配置被修改时,会自动刷新
依赖:
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>2021.0.5.0</version>
</dependency>