Nacos配置管理之多环境共享
创始人
2024-04-23 03:10:58
0

多环境配置共享

微服务启动时会从nacos读取多个配置文件:

1、[spring.application.name]-[spring.profiles.active].yaml 例如:userservice-dev.yaml

【服务名】-【环境】.yaml

2、 [spring.application.name].yaml  【服务名】.yaml 例如:userservice.yaml

无论profile(环境)如何变化,[spring.application.name].yaml 这个文件一定会被加载、一定会被读取,因此多环境共享的配置可以写入这个文件。

 

 读取Nacos配置的userservice.yaml文件

前面学过读取Nacos配置文件方式二,通过@ConfigurationProperties注解读取; 

@Component
@Data
@ConfigurationProperties(prefix = "pattern")
public class PatternProperties {private String dateformat;private String envSharedvalue;
}
@RestController
@RequestMapping("user")
public class UserController {@Autowiredprivate PatternProperties properties;@GetMapping("/prop")public PatternProperties properties(){return properties;}
}

 微服务是如何知道要读取Nacos中配置的userservice.yaml文件你呢?

 通过之前的学习可以知道,bootstrap.yml文件是会优先被Nacos读取的,如图所示,我们在bootstrap.yml里面配置了 Nacos地址、微服务名、文件后缀名,由这三部分即可组成 userservice.yaml 文件配置名,也就是你在Nacos配置中心配置的名字,Nacos就是通过这种方式找到需要读取的配置文件的。

根据图片配置,可以得知 userservice-dev.yaml 配置文件也会被读取到,但是 userservice.yaml配置文件是一定会被读取的。

 多环境配置读取测试

 端口号为8081的userservice微服务激活dev环境,端口号8082的激活test环境;分别启动这两个微服务,那么激活环境为dev端口号为8081的服务不仅可以读取到日期格式属性dateformat、也可以读取到envSharedvalue属性,而端口号8082由于激活的是测试环境test,那么只能读取共享配置userservice.yaml里面的 envSharedvalue 属性;

 测试结果:服务8082只能读取到共享属性envSharedvalue的值。

 端口号8081的服务由于激活的是dev环境,所以可以读取到 userservice-dev.yaml配置文件的配置,又由于 userservice.yaml 共享文件的配置是一定可以被服务读取到的,那么共享文件中的envSharedvalue属性也会被读取;两个属性都有值;

 多种配置的优先级

 同一种属性名的值在本地配置文件中配置(也就是application.yml),在Nacos中也配置,在Nacos中配置多环境共享配置 userservice.yaml,还有非多环境共享配置 userservice-dev.yaml,那么获取这个属性值的优先级是什么呢?以哪个配置文件中的值为准呢?

优先级如下:

服务名-profile.yaml > 服务名称.yaml > 本地配置;

userservice-dev.yaml > 多环境共享配置 userservice.yaml > application.yml

总结

 

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
【PdgCntEditor】解... 一、问题背景 大部分的图书对应的PDF,目录中的页码并非PDF中直接索引的页码...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...
有效的括号 一、题目 给定一个只包括 '(',')','{','}'...