官方文档
docker run --name nacos-quick -e MODE=standalone -p 8849:8848 -d nacos/nacos-server:2.0.2
配置-Nacos
在Nacos中添加如下的配置
-
Data ID: data-id-dev.yaml
Group: group-name
spring:
application:
name: application-name-provider-dev
-
Data ID: data-id.yaml
Group: group-name
spring:
application:
name: application-name-provider
profiles:
active: dev
cloud:
nacos:
discovery:
server-addr: "192.168.66.101:8848"
namespace: "3ceb7b5c-218b-4d17-a9bb-9207a45d105d"
-
Data ID: ext-1.yaml
Group: group1
data-id: ext-1.yaml
group: group1
refresh: true
spring:
data-id: ext-112.yaml
group: group112
refresh: true
-
Data ID: ext-0.yaml
Group: DEFAULT_GROUP
data-id: ext-0.yaml
group: DEFAULT_GROUP
refresh: true
-
Data ID: global.yaml
Group: DEFAULT_GROUP
data-id: global.yaml
配置-SpringCloud
这个一定要是 bootstrap.yml ,而不是application.yml
spring:
application:
name: application-name-provider
profiles:
# 这里可以指定环境,特定环境的配置优先级更高。
active: dev
cloud:
nacos:
config:
#Nacos地址
server-addr: "192.168.66.101:8848"
#配置分组
group: "group-name"
#配置Id
prefix: "data-id"
#配置文件类型
file-extension: "yaml"
# 全局共享的配置
shared-dataids: global.yaml
# 自动刷新
refreshable-dataids: global.yaml
#外部配置
ext-config[0]:
# group 和 referesh 使用默认值
data-id: ext-0.yaml
ext-config[1]:
data-id: ext-1.yaml
group: group1
refresh: true
# namespace: "customer-namespace" # 此处可以指定自定义的命名空间
### 以上的配置会读取多个配置, 从启动日志中可以看到如下配置被加载,优先级从高到低
# Located property source:
#[
#BootstrapPropertySource {name='bootstrapProperties-data-id-dev.yaml'},
#BootstrapPropertySource {name='bootstrapProperties-data-id.yaml'},
#BootstrapPropertySource {name='bootstrapProperties-ext-1.yaml'},
#BootstrapPropertySource {name='bootstrapProperties-ext-0.yaml'},
#BootstrapPropertySource {name='bootstrapProperties-global.yaml'}
#]
启动&测试
- 启动日志
2021-10-12 16:02:53.147 INFO 1224 --- [168.66.101_8848] o.s.c.a.n.c.NacosPropertySourceBuilder : Loading nacos data, dataId: 'global.yaml', group: 'DEFAULT_GROUP'
2021-10-12 16:02:53.151 INFO 1224 --- [168.66.101_8848] o.s.c.a.n.c.NacosPropertySourceBuilder : Loading nacos data, dataId: 'ext-1.yaml', group: 'group1'
2021-10-12 16:02:53.155 INFO 1224 --- [168.66.101_8848] o.s.c.a.n.c.NacosPropertySourceBuilder : Loading nacos data, dataId: 'data-id.yaml', group: 'group-name'
2021-10-12 16:02:53.159 INFO 1224 --- [168.66.101_8848] o.s.c.a.n.c.NacosPropertySourceBuilder : Loading nacos data, dataId: 'data-id-dev.yaml', group: 'group-name'
2021-10-12 16:02:53.160 INFO 1224 --- [168.66.101_8848] b.c.PropertySourceBootstrapConfiguration : Located property source: [BootstrapPropertySource {name='bootstrapProperties-data-id-dev.yaml'}, BootstrapPropertySource {name='bootstrapProperties-data-id.yaml'}, BootstrapPropertySource {name='bootstrapProperties-ext-1.yaml'}, BootstrapPropertySource {name='bootstrapProperties-ext-0.yaml'}, BootstrapPropertySource {name='bootstrapProperties-global.yaml'}]
2021-10-12 16:02:53.161 INFO 1224 --- [168.66.101_8848] o.s.boot.SpringApplication : The following profiles are active: dev
2021-10-12 16:02:53.168 INFO 1224 --- [168.66.101_8848] o.s.boot.SpringApplication : Started application in 0.551 seconds (JVM running for 6.327)
2021-10-12 16:02:53.184 INFO 1224 --- [168.66.101_8848] o.s.c.e.event.RefreshEventListener : Refresh keys changed: []
-
Debug测试配置获取
从下图可以看到,SpringBoot加载了4个配置源,优先级从高到低依次排列
-
编码获取配置和SpringBoot一样
/* 这种方式自动刷新没有效果 */ @Value("${data-id}") String group; @Autowired NacosConfig nacosConfig; @Configuration @ConfigurationProperties("spring") @Data public class NacosConfig { String dataId; String group; Boolean refresh; }