spring cloud alibaba nacos config 配置加载
其实就是利用了 spring cloud bootstrap配置加载的机制实现的。
- 通过SPI机制(spring.factories)配置
NacosConfigBootstrapConfiguration,注入NacosConfigManager、NacosPropertySourceLocator NacosPropertySourceLocator使用 nacos api(NacosConfigService、ClientWorker)加载配置,使用NacosPropertySourceBuilder把配置封装成NacosPropertySource

spring cloud alibaba nacos config 配置刷新
具体配置刷新是用spring cloud refreshScope 实现的,spring-cloud-starter-alibaba-nacos-config 主要负责监听nacos server 配置发布,然后拉取最新配置,发布RefreshEvent。
-
具体的监听在
ClientWorker中- nacos 1.x 通过
LongPollingRunnable内部类使用 http 长轮询的方式实现 - nacos 2.x 通过
ConfigRpcTransportClient内部类使用 grcp 长连接实现
nacos 服务端会返回发生变化的配置给
ClientWorker,然后由ClientWorker主动去拉取最新的配置 - nacos 1.x 通过
-
拉取到配置后会使用
NacosContextRefresher中匿名内部的AbstractSharedListener去发布RefreshEvent,接着会进入到 spring cloud refresh scope 的处理过程去刷新Bean 获取最新的配置。
