springboot中nacos-client獲取配置的實現(xiàn)方法
在springboot中使用nacos的小伙伴是不是跟我有一樣的好奇,springboot中nacos-client是怎么獲取配置的?今天我跟了一下代碼,大致的流程弄懂了,分享給大家。
1、導(dǎo)入nacos的maven包
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>nacos-config-spring-boot-starter</artifactId>
<version>0.2.7</version>
</dependency>2、nacos-config-spring-boot-autoconfigure解析
我們就看主要的,nacos-client-spring-boot-starter中依賴了nacos-config-spring-boot-autoconfigure,自動裝配的知識我就當(dāng)大家都了解哈,不了解的可以我留言,我會單獨寫一篇springboot自動裝配的解析。

再看spring.factories

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ com.alibaba.boot.nacos.config.autoconfigure.NacosConfigAutoConfiguration org.springframework.boot.env.EnvironmentPostProcessor=\ com.alibaba.boot.nacos.config.autoconfigure.NacosConfigEnvironmentProcessor
3、NacosConfigEnvironmentProcessor邏輯解析
咱們來看一下NacosConfigEnvironmentProcessor類中到底干了啥?實現(xiàn)了EnvironmentPostProcessor接口的postProcessEnvironment這個方法

其中加載了NacosConfigApplicationContextInitializer這個類,實現(xiàn)了ApplicationContextInitializer,這個接口在springboot啟動過程中是很重要的,會初始化一些東西


為了更方便的看到結(jié)果,我打個斷點到loadConfig中,主要看reqGlobalNacosConfig方法

在reqGlobalNacosConfig方法中,我們看到我們熟悉的dataIds,這個是在配置中配置的,對應(yīng)的nacos服務(wù)端的配置,配置的dataIds是以逗號分隔的字符串,這里主要是將dataIds字符串轉(zhuǎn)換成數(shù)組:

最終會走到reqNacosConfig中,有個for循環(huán)來循環(huán)dataIds,NacosUtils.getContent方法就是通過dataId,拿到服務(wù)端的配置。底層還是通過http請求訪問的http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=xxx_database_config&group=DEFAULT_GROUP&tenant=xxx 接口,由于篇幅的原因,這里就不解釋了,我們主要是看nacos的配置是怎么拿到的。

本文章只提供看源碼的思路,如果想具體了解nacos獲取配置的全過程,還需要你真正的去debug源碼。
我這里留一個小問題,大家可以思考一下:NacosConfigEnvironmentProcessor類 什么時候被springboot加載的。
到此這篇關(guān)于springboot中nacos-client獲取配置的實現(xiàn)方法的文章就介紹到這了,更多相關(guān)springboot nacos-client獲取配置內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- springboot2.6.3讀取不到nacos上的配置文件問題
- springboot集成nacos讀取nacos配置數(shù)據(jù)的原理
- springboot?bootstrap.yml?nacos配置中心問題
- SpringBoot集成Nacos實現(xiàn)注冊中心與配置中心流程詳解
- springboot整合nacos,如何讀取nacos配置文件
- springboot讀取nacos配置文件的實現(xiàn)
- 聊聊SpringBoot整合Nacos自動刷新配置的問題
- 聊聊SpringBoot使用Nacos進(jìn)行服務(wù)注冊發(fā)現(xiàn)與配置管理問題
- 關(guān)于springboot中nacos動態(tài)路由的配置
- SpringBoot使用Nacos動態(tài)配置數(shù)據(jù)源的方法
- SpringBoot使用Nacos配置中心的實現(xiàn)
- springboot集成nacos的配置方法
- Nacos與SpringBoot實現(xiàn)配置管理的開發(fā)實踐
相關(guān)文章
flutter?TabBarView?動態(tài)添加刪除頁面的示例代碼
在Flutter中使用TabBarView動態(tài)添加和刪除頁面時,如果未為每個頁面設(shè)置唯一的key,會導(dǎo)致刪除頁面時出現(xiàn)狀態(tài)錯誤或刪除錯誤的頁面,正確的做法是為每個頁面指定全局唯一的key,這樣可以確保頁面在添加和刪除時狀態(tài)正確,感興趣的朋友跟隨小編一起看看吧2024-11-11

