為什么bootstrap.yml比application.yml優先級高


最近遇到好幾個與此有關的問題。

其中一個典型的問題是,明明bootstrap.yml指定了端口,但還是顯示為默認的8080端口。最后我用了一個常規的死辦法將bootstrap.yml改為application.yml就好了。

於是我不得不思考,為什么會出現這樣的問題。通過搜索我了解到了以下幾點。

為什么bootstrap.yml會比application.yml先加載?

啟動上下文時,Spring Cloud 會創建一個 Bootstrap Context,作為 Spring 應用的 Application Context 的父上下文。

初始化的時候,Bootstrap Context 負責從外部源加載配置屬性並解析配置。這兩個上下文共享一個從外部獲取的 Environment。Bootstrap 屬性有高優先級,默認情況下,它們不會被本地配置覆蓋。

也就是說如果加載的 application.yml 的內容標簽與 bootstrap 的標簽一致,application 也不會覆蓋 bootstrap,而 application.yml 里面的內容可以動態替換。


免責聲明!

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



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