首先分享之前的所有文章 , 欢迎点赞收藏转发三连下次一定 >>>> 😜😜😜
文章合集 : 🎁 juejin.cn/post/694164…
Github : 👉 github.com/black-ant
CASE 备份 : 👉 gitee.com/antblack/ca…
一 . 前言
这一篇来看一下 Nacos Client 对配置的请求流程以及相关的配置
二 . 配置类及用法
2.1 基本使用案例
1 | yml复制代码# 这也是最常见的案例模板 |
2.2 配置类解析
Nacos 对应的配置类为 NacosConfigProperties , 这里来看一下所有的参数:
1 | java复制代码// Nacos 地址 |
三 . 配置流程
下面看一下配置的加载和获取流程
3.1 开启配置的入口
配置得开启是基于 PropertySourceBootstrapConfiguration 开启的 ,
1 | java复制代码public void initialize(ConfigurableApplicationContext applicationContext) { |
3.2 Nacos 加载入口
期间会经过接口类的 PropertySourceLocator 来发起对应
1 | java复制代码// C- NacosPropertySourceLocator |
补充一 : loadSharedConfiguration 进行共享数据的处理
持多个共享 Data Id 的配置,优先级小于extension-configs , 适合于共享配置文件与项目默认配置文件处于相同Group时 (PS:只能在一个 Group 中)
主要流程为获取配置 , 校验准确性 , 调用 loadNacosConfiguration 发起配置的调用
PS: 主要流程看补充二 , 这也是为什么优先级没有 loadExtConfiguration 高的原因
补充二 : loadExtConfiguration 处理配置
主要流程为 nacosConfigProperties.getExtensionConfigs() , 判断是否存在 , 存在会先 checkConfiguration , 再调用 loadNacosConfiguration 进行主流程处理
1 | java复制代码private void loadNacosConfiguration(final CompositePropertySource composite,List<NacosConfigProperties.Config> configs) { |
补充三 : 主配置文件获取
该流程的优先级最高 , 是通过常规方式获取配置的流程
1 | java复制代码private void loadApplicationConfiguration( |
可以看到 , 这里加载了多次 , 同时通过这种方式确定优先级
3.3 Nacos 获取配置主流程
1 | java复制代码private List<PropertySource<?>> loadNacosData(String dataId, String group,String fileExtension) { |
PS : 这里不止是个字符串 , 复制到文本里面可以看出就是一个 yaml 格式的数据
3.3.1 远程配置的获取
1 | java复制代码private String getConfigInner(String tenant, String dataId, String group, long timeoutMs) throws NacosException { |
3.3.2 远程配置的解析
1 | java复制代码// C- NacosDataParserHandler |
补充 : YamlPropertySourceLoader 流程
1 | java复制代码public List<PropertySource<?>> load(String name, Resource resource) throws IOException { |
四 . 总结
篇幅有限 , 所以 本地配置的覆盖与集成 以及 配置的顺序加载及优先级 准备放在下一篇文档里面梳理 , 下面分享一张流程图
补充 : 配置的优先级
- application 主配置 > extensionConfigs > sharedConfigs
- extensionConfigs/sharedConfigs 排在后面的数组比前面的优先级高
- application 主逻辑 profile > 带后缀
本文转载自: 掘金