1.配置文件的读取方式【重点】
nacos
配置中心通过
namespace
、
dataId
和
group
来唯一确定一条配置。
Namespace
:即命名空间。默认的命名空间为
public
,我们可以在
Nacos
控制台中新建
命名空间;
dataId
:即配置文件名称
Group
: 即 配 置 分 组 , 默 认 为 DEFAULT_GROUP , 可 以 通 过spring.cloud.nacos.config.group
配置。
其中:
dataId
是最关键的配置字段:格式如下:
${prefix}
-
${spring.profiles.active}
. ${file-extension}
说明:
prefix
默 认 为
spring.application.name
的 值 , 也 可 以 通 过 配 置 项
spring.cloud.nacos.config.prefix
来配置;
spring.profiles.active
即 为 当 前 环 境 对 应 的
profile
。 注 意 , 当
spring.profiles.active
为空时,对应的连接符
-
也将不存在,
dataId
的拼接格式变
成
${prefix}.${file-extension}
;
file-extension
为 配 置 内 容 的 数 据 格 式 , 可 以 通 过 配 置 项
spring.cloud.nacos.config.file-extension
来配置。
这就是上面我们为什么能获得到配置的原因了。
注意
:
在写
dataId
的时候一定要添加文件类型后缀
Eg: nacos-config-dev
.yml
2.配置文件划分
Nacos
配置中心的
namespace
、
dataId
和
group
可以方便灵活地划分配置。比如,我们现在有一个项目需要开发,项目名称为
bjpowernode
,项目开发人员分为两个组:
GROUP_A
和
GROUP_B
,项目分为三个环境:开发环境
dev
、测试环境
test
和生产环境
prod
。
powernode->GRUOR_A->dev
1.新建命名空间如图所示
2.在shop命名空间里面新建配置文件
3.再次在shop命名空间里新建配置文件
4.新建项目nacos-config-test
选择依赖
4.1 pom.xml文件
4.2 bootstrap.yml配置文件
server:
port: 8082
spring:
application:
name: nacos-config-test
cloud:
nacos:
config:
server-addr: localhost:8848
username: nacos
password: nacos
namespace: fde52e30-7d67-49f3-b808-5eef3763d40b #目前读取多配置文件的方式只支持在同一个命名空间下
extension-configs: #可以读多个配置文件 需要在同一个命名空间下面可以是不同的组
- dataId: user-center-dev.yml
group: A_GROUP
refresh: true
- dataId: member-center-dev.yml
group: B_GROUP
refresh: false #不去动态刷新配置文件
4.3 TestController类
package com.it.controller;
import com.it.domian.Student;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class TestController {
@Autowired
private Student student;
@GetMapping("info")
public String getInfo(){
return student.getName()+":"+student.getAge()+":"+student.getAddress()+":"+student.getHobby();
}
}
4.4 Student类
package com.it.domian;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.stereotype.Component;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Component
@RefreshScope
public class Student {
@Value("${student.name}")
private String name;
@Value("${student.age}")
private Integer age;
@Value("${student.address}")
private String address;
@Value("${student.hobby}")
private String hobby;
}
4.5 主函数启动类
5.测试项目
分别修改配置文件的内容 ,发现A_GROUP可以正常更改,B_GROUP不能正常修改。
这是因为B_GROUP没有设置配置文件自动刷新