當前位置:首頁 » 網頁前端 » 前端怎麼讀取nacos配置
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

前端怎麼讀取nacos配置

發布時間: 2023-03-01 10:46:18

㈠ springboot 2.4.13 無法從nacos獲取配置,但是可以注冊到nacos

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.bootstrap.enabled=true 並且存在 org.springframework.cloud.bootstrap.marker.Marker 類的時候,spring cloud 才會去載入spring cloud的配置。

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

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

(至於為什麼是bootstrap.yml而不是application.yml,這又是另一個問題了)

有了上面的配置,程序啟動後,就能正常的從nacos配置中心獲取配置了。

㈡ Spring Gateway 集成Nacos 實現動態路由配置

通過Spring Gateway 集成Nacos實現配置管理,並且實現動態路由管理。

一、創建test-gateway項目,POM文件如下:

二、創建項目配置文件bootstrap.yml

a、test_gateway_commons.yml內容如下:

三、創建網關配置類 GatewayConfig.java

四、創建動態路由服務DynamicRouteServiceImpl.java

五、創建通過Nacos讀取動態路由配置服務.java

六、配置動態路由配置文件gateway_dynamic_router,內容如下:

通過以上步驟就完成Spring Gateway 集成Nacos 實現動態路由配置功能。以後只要通過修改Nacos的配置文件就可以時間服務的動態上下線了。不需要再重啟網關了。