SpringCloud Config - client連接server的設置寫在application.yml, 導致屬性無法解析


原因

Bootstrap.yml (bootstrap.properties) 是在application.yml (application.properties)之前加載的。它通常用於“使用SpringCloud Config Server時,應在bootstrap.yml中指定spring.application.name和spring.cloud.config.server.git.uri”以及一些加密/解密信息。

 

Spring Cloud會創建一個`Bootstrap Context`(由bootstrap.yml加載),作為Spring應用的`Application Context`(由application.yml加載)的父上下文。初始化的時候,`Bootstrap Context`負責從外部源加載配置屬性並解析配置。這兩個上下文共享一個從外部獲取的`Environment`。`Bootstrap`屬性有高優先級,默認情況下,它們不會被本地配置覆蓋。

 

例如,當使用SpringCloud Config時,通常從服務器加載“真正的”配置數據。為了獲取URL(和其他連接配置,如密碼等),您需要一個較早的或“bootstrap”配置。因此,您將配置服務器屬性放在bootstrap.yml中,該屬性用於加載實際配置數據(通常覆蓋application.yml [如果存在]中的內容)。

 

問題描述

根據網上的各種教程說明,將config服務的地址寫到application.properties中

spring.cloud.config.uri= http://localhost:8888/

config服務本地開啟,項目正常啟動,能讀到遠程配置
今天為了方便使用,將config服務部署到測試服務器並將配置文件改為:

spring.cloud.config.uri= http://192.168.1.222:8888/

奇跡在此發生,無論怎么啟動日志打印出的遠程文件服務都是http://localhost:8888/
完全懵逼狀態,難道這貨還有緩存.經過一系列的clean問題依舊
百度了一下 沒有相關的信息
無奈的情況下,發揮我二貨潛質,新建項目,指定地址,啟動……..問題依舊
萬般無奈的情況下點開源碼,發現

這里寫圖片描述

debug后發現 啟動時 uri沒有從application.properties中獲取.
繼續百度,發現 springboot的配置文件除了application.properties外還有一個叫bootstrap.properties的東東(問號臉)
新建bootstrap.properties文件,復制config配置到文件中,啟動.問題解決
本着刨根問底的精神去查詢了一下 兩個文件的區別,請參考
https://www.cnblogs.com/EasonJim/p/7589546.html

 

三、高級使用場景

https://www.cnblogs.com/BlogNetSpace/p/8469033.html

 

參考文獻

版權聲明:本文為CSDN博主「lovemf0919」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/lovmf0919/article/details/78584236

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM