SpringCloudAlibaba-6-nacos配置文件加载顺序

前言

上一节中我们简单实用nacos作为配置中心,实现了简单配置文件读取和实时刷新,本节主要讲解nacos配置文件的加载顺序。

内容

当你有多个生命周期的配置文件时候,如何去加载,哪个先去加载,怎么去区分不同的环境。

1.profile

新建工程:nacos-config-client-load并将其配置到父工程的model里面.然后重新工程发现加载

1
Located property source: CompositePropertySource {name='NACOS', propertySources=[NacosPropertySource {name='nacos-config-client-load-dev.yml'}, NacosPropertySource {name='nacos-config-client-load.yml'}]}

通过上面的启动日志我们知道,除了加载:nacos-config-client-load-dev.yml还会加载:nacos-config-client-load.yml

我们此时搜索data id发现控制台确实没有输出,这个说明我们在nacos配置文件是没有创建

我们创建

此时我们请求:
http://127.0.0.1:8056/test/config
结果:
nacos-config-client-load-dev.yml

如果我们删除nacos-config-client-load-dev.yml
应用控制台会打印日志:nacos-config-client-load-dev.yml

此时我们请求:
http://127.0.0.1:8056/test/config
结果:
nacos-config-client-load.yml

结论:

  • 优先使用配置是 applicationname-profile
  • 不存在时读取 applicationname

2.GROUP

2.1 简介
  1. 1.我们创建的配置文件,里面都有一个组的概念:Group,我们没有输入时候默认都是:DEFAULT_GROUP
  2. 2.组的概念主要是为了让我们创建的配置文件属于同一个组里面,各个应用之间的隔离都是可以通过这个属性来配置
  3. 3.那么我们怎样去声明加载哪一个组呢?
    我们在配置文件添加group属性,group默认属性是:DEFAULT_GROUP
2.2 实践
  1. 1.修改bootstrap.yml配置文件
    我们在配置文件中添加group属性,其值为:alibaba
    此时重启服务时候发现其加载的data id不存在,访问:
    http://127.0.0.1:8056/test/config输出结果是'空test
    原因是我们在配置中心没有添加 组为:alibaba的配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
spring:
application:
name: nacos-config-client-load
cloud:
nacos:
config:
server-addr: 127.0.0.1:8848
file-extension: yml
group: alibaba
server:
port: 8056
```
2. 2.nacos控制台创建alibaba组下配置文件
![](https://raw.githubusercontent.com/startshineye/img/master/2020/01/41.png)
此时控制台打印出:
oading nacos data, dataId: 'nacos-config-client-load.yml', group: 'alibaba'
测试:访问:http://127.0.0.1:8056/test/config
返回结果:nacos-config-client-load-alibaba.yml
#### 3.namespace
更深层次隔离:namespace
namespace-命名空间,在nacos里面简称租户
![](https://raw.githubusercontent.com/startshineye/img/master/2020/01/42.png)
##### 3.1 实践
1. 1.在nacos控制台创建命名空间
![](https://raw.githubusercontent.com/startshineye/img/master/2020/01/43.png)
2. 2.在bootstrap.yml配置文件添加属性:namespace

spring:
application:
name: nacos-config-client-load
cloud:
nacos:
config:
server-addr: 127.0.0.1:8848
file-extension: yml
namespace: NS
server:
port: 8056
```

此时重启服务发现我们没有产生data id
因为我们没有在nacos控制台创建NS下的配置文件

  1. 3.在nacos控制台下的NS命名空间下创建对应的配置文件

我们此时在控制台搜索data id发现还是没有对应文件生成。

  1. 4.我们修改下配置文件中namespace为命名空间ID

测试:
http://127.0.0.1:8056/test/config
返回:
nacos-config-client-load-NS.yml

毕业于<br>相信技术可以改变人与人之间的生活<br>码农一枚