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没有设置配置文件自动刷新
版权归原作者 做一道光 所有, 如有侵权,请联系我们删除。