基于SpringBoot bootstrap.yml配置未生效的解決
我就廢話不多說(shuō)了,大家還是直接看代碼吧~
<!--需要引入該jar才能使bootstrap配置文件生效--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-context</artifactId> </dependency>
補(bǔ)充知識(shí):SpringBoot不讀取bootstrap.yml/properties文件
今天寫(xiě)創(chuàng)建了一個(gè)SpringBoot項(xiàng)目,配置文件從其他項(xiàng)目拷貝了一份bootstrap.yml
之前一直用的application.yml
心想:application.yml 優(yōu)先級(jí)沒(méi)有bootstrap.yml 高,bootstrap配置文件肯定沒(méi)問(wèn)題
項(xiàng)目一跑來(lái),發(fā)現(xiàn)配置文件里面的內(nèi)容沒(méi)讀取到。
之后通過(guò)各種查資料,才明白了application.yml 和bootstrap.yml 的區(qū)別,不僅僅是優(yōu)先級(jí)的問(wèn)題。
先說(shuō)我的問(wèn)題是什么原因吧:
SpringBoot 項(xiàng)目中如果沒(méi)有依賴 spring-cloud-context 的話,是不會(huì)讀取bootstrap.properties 文件
也就是說(shuō)
bootstrap.yml配置是SpringCloud項(xiàng)目才會(huì)用到的。
如果你的項(xiàng)目?jī)H僅是一個(gè)SpringBoot項(xiàng)目,只會(huì)識(shí)別application.yml配置文件。
由于SpringCloud是基于SpringBoot構(gòu)建的,所有SpringCloud項(xiàng)目?jī)煞N文件都會(huì)識(shí)別,這個(gè)時(shí)候才有優(yōu)先級(jí)的說(shuō)法,SpringCloud項(xiàng)目是會(huì)優(yōu)先讀取bootstrap配置在讀取application配置。
引用Spring官網(wǎng)的一句話
A Spring Cloud application operates by creating a “bootstrap” context, which is a parent context for the main application. Out of the box it is responsible for loading configuration properties from the external sources, and also decrypting properties in the local external configuration files.
SpringCloud 應(yīng)用是基于 一個(gè) “bootstrap”的上下文運(yùn)行的。
也就說(shuō)明了 bootstrap這個(gè)配置是SpringCloud 應(yīng)用才會(huì)用的。
而且這個(gè)配置是不能被覆蓋的,也就是優(yōu)先級(jí)比application配置中的高。
什么配置在application配置?什么配置在bootstrap里面配置?
1、當(dāng)使用 Spring Cloud Config Server 的時(shí)候,spring.application.name 和 spring.cloud.config.server.git.uri應(yīng)該在 bootstrap.yml 里面指定
2、一些加密解密的配置也應(yīng)該配置在bootstrap里面
英文好的可以參考官網(wǎng)文章:
https://cloud.spring.io/spring-cloud-commons/multi/multi__spring_cloud_context_application_context_services.html#customizing-bootstrap-properties
以上這篇基于SpringBoot bootstrap.yml配置未生效的解決就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. Springboot 全局日期格式化處理的實(shí)現(xiàn)2. vue實(shí)現(xiàn)web在線聊天功能3. Django使用HTTP協(xié)議向服務(wù)器傳參方式小結(jié)4. JAMon(Java Application Monitor)備忘記5. SpringBoot+TestNG單元測(cè)試的實(shí)現(xiàn)6. docker容器調(diào)用yum報(bào)錯(cuò)的解決辦法7. Java使用Tesseract-Ocr識(shí)別數(shù)字8. 完美解決vue 中多個(gè)echarts圖表自適應(yīng)的問(wèn)題9. HTML基本語(yǔ)法和語(yǔ)義寫(xiě)法規(guī)則與實(shí)例10. 前端獲取http狀態(tài)碼400的返回值實(shí)例
