當前位置:編程學習大全網 - 源碼下載 - Springboot源代碼導入

Springboot源代碼導入

Springboot 2.4.13集成了nacos。啟動後nacos註冊表有服務,但發現配置沒有生效。於是,壹個尋找源代碼的過程開始了。

首先是pom推出的nacos配置。

然後,application.yml添加nacos配置。

啟動後發現註冊表中有壹個服務,但該服務的配置不是從nacos配置中心獲取的,而是本地的。

查找nacos源代碼,找到nacos被配置為自動註入的代碼塊:

然後發現是這個NacosPropertySourceLocator實現的配置導入的。

查詢源代碼,可以發現相關的配置都是用這個方法加載的,這個方法就是壹般的入口。

因此,嘗試添加壹個斷點,並檢查配置信息,看看為什麽沒有導入配置。但是,程序根本沒有進入這個方法!!!

根據接口實現可以發現,NacosPropertySourceLocator是PropertySourceLocator的實現類,這個方法的調用和執行不是由nacos自己完成的,而是由spring完成的。

Spring cloud通過BootstrapApplicationListener監聽springboot啟動過程中的事件,並通過onApplicationEvent方法處理事件,從而導入spring cloud的相關配置。

通過添加斷點,我們可以發現這裏的方法bootstrapEnabled()的返回值為false,後續的加載將不會直接執行。

因此,有必要確保bootstrapEnabled返回值為true。

查看PropertyUtils的源代碼可以發現,spring cloud只有在配置項spring . cloud . bootstrap . enabled = true且org . spring framework . cloud . bootstrap . marker . marker的類存在的情況下,才會加載spring cloud的配置。

因此,需要在pom中添加marker的組件依賴:

此時,您需要在bootstrap.yml中添加spring cloud配置:

(至於為什麽是bootstrap.yml而不是application.yml,這是另壹個問題了。)

通過以上配置,程序啟動後,可以正常從nacos配置中心獲取配置。

  • 上一篇:2007年中考滿分作文
  • 下一篇:股票K線走勢圖中的綠線黃線白線紫紅線分別代表什麽
  • copyright 2024編程學習大全網