基于application和bootstrap的加載順序及區(qū)別說明
application和bootstrap的加載順序及區(qū)別
bootstrap.yml(bootstrap.properties)先加載
application.yml(application.properties)后加載
bootstrap.yml 用于應(yīng)用程序上下文的引導(dǎo)階段。
bootstrap.yml 由父Spring ApplicationContext加載。
父ApplicationContext 被加載到使用 application.yml 的之前。
bootstrap.yml
是系統(tǒng)級(jí)別的一些參數(shù)配置,這些參數(shù)一般是不變的。
application.yml 一般用來定義單個(gè)應(yīng)用級(jí)別的,如果搭配 spring-cloud-config 使用 application.yml 里面定義的文件可以實(shí)現(xiàn)動(dòng)態(tài)替換。
使用Spring Cloud Config Server時(shí),應(yīng)在 bootstrap.yml 中指定:
spring.application.name spring.cloud.config.server.git.uri
注意:
一旦bootStrap.yml 被加載,則內(nèi)容不會(huì)被覆蓋,即便后期加載的application.yml的內(nèi)容標(biāo)簽與bootstrap的標(biāo)簽一致,application 也不會(huì)覆蓋bootstrap, 而application.yml 里面的內(nèi)容可以動(dòng)態(tài)替換。
bootstrap.yml與application.yml執(zhí)行順序(原因:類加載器的先后順序)
結(jié)論:bootstrap.yml 先于 application.yml 加載
bootstrap.yml(bootstrap.properties)用來程序引導(dǎo)時(shí)執(zhí)行,應(yīng)用于更加早期配置信息讀取,如可以使用來配置application.yml中使用到參數(shù)等
application.yml(application.properties) 應(yīng)用程序特有配置信息,可以用來配置后續(xù)各個(gè)模塊中需使用的公共參數(shù)等。
bootstrap.yml 先于 application.yml 加載
應(yīng)用:當(dāng)使用 Spring Cloud Config Server 的時(shí)候
bootstrap.yml 中
spring.application.name: test spring.cloud.config.name: testName spring.cloud.config.uri: http://config1.spring-demo.test.com:8888
原因:類加載器的先后順序

負(fù)責(zé)加載class文件,class文件在文件開頭有特定的文件標(biāo)示,并且ClassLoader只負(fù)責(zé)class文件的加載,至于它是否可以運(yùn)行,則由Execution Engine決定

虛擬機(jī)自帶的加載器
1.啟動(dòng)類加載器(Bootstrap)C++
2.擴(kuò)展類加載器(Extension)Java
3.應(yīng)用程序類加載器(AppClassLoader)Java 也叫系統(tǒng)類加載器,加載當(dāng)前應(yīng)用的classpath的所有類
4.用戶自定義加載器 Java.lang.ClassLoader的子類,用戶可以定制類的加載方式
注意java中反射的三種方法
1.通過Object類的getClass方法來獲取
java.lang.Object中定義有g(shù)etClass方法:public final Class getClass()所有Java對(duì)象都具備這個(gè)方法,該方法用于返回調(diào)用該方法的對(duì)象的所屬類關(guān)聯(lián)的Class對(duì)
2.用.class的方式
使用類名加“.class”的方式即會(huì)返回與該類對(duì)應(yīng)的Class對(duì)象。
3.使用Class.forName方法
Class有一個(gè)著名的static方法
forName:public static Class forName(String className) throws ClassNotFoundException
該方法可以根據(jù)字符串參數(shù)所指定的類名獲取與該類關(guān)聯(lián)的Class對(duì)象。
如果該類還沒有被裝入,該方法會(huì)將該類裝入JVM。
該方法聲明拋出ClassNotFoundException異常。
顧名思義,當(dāng)該方法無法獲取需要裝入的類時(shí)(例如,在當(dāng)前類路徑中不存在這個(gè)類),就會(huì)拋出這個(gè)異常。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java循環(huán)對(duì)bean的屬性進(jìn)行賦值的實(shí)現(xiàn)
本文主要介紹了Java循環(huán)對(duì)bean的屬性進(jìn)行賦值,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08
add方法理解ArrayList的擴(kuò)容機(jī)制
這篇文章主要為大家介紹了add方法理解ArrayList的擴(kuò)容機(jī)制示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03
maven中央倉庫修改驗(yàn)證方式導(dǎo)致用戶名密碼失效的解決方式
這篇文章主要介紹了maven中央倉庫修改驗(yàn)證方式導(dǎo)致用戶名密碼失效的解決方式,文中通過圖文結(jié)合的方式講解的非常詳細(xì),對(duì)大家解決問題有一定的幫助2024-11-11
SpringBoot項(xiàng)目整合OpenFeign啟動(dòng)失敗及運(yùn)行時(shí)常見錯(cuò)誤解決方案
文章總結(jié)了在使用Feign進(jìn)行服務(wù)調(diào)用時(shí)可能遇到的常見問題及其解決方案,涵蓋了依賴配置、接口定義、運(yùn)行時(shí)錯(cuò)誤和其它常見問題的解決方法,建議使用兼容的版本、統(tǒng)一的包名結(jié)構(gòu),并為接口方法添加HTTP注解,感興趣的朋友跟隨小編一起看看吧2026-01-01
基于Java的MathML轉(zhuǎn)圖片的方法(示例代碼)
最近接到一個(gè)新需求mathML轉(zhuǎn)圖片怎么實(shí)現(xiàn)呢?剛開始還真是蒙圈了,不知道怎么實(shí)現(xiàn),今天小編記錄一種基于Java的MathML轉(zhuǎn)圖片的方法,感興趣的朋友一起看看吧2021-06-06
使用AbstractRoutingDataSource實(shí)現(xiàn)數(shù)據(jù)源動(dòng)態(tài)切換的實(shí)例
AbstractRoutingDataSource 是 Spring 框架提供的一個(gè)抽象類,用于實(shí)現(xiàn)動(dòng)態(tài)數(shù)據(jù)源路由,這個(gè)類主要用于多數(shù)據(jù)源場(chǎng)景,其中可以根據(jù)不同的條件動(dòng)態(tài)地切換到不同的數(shù)據(jù)源,本文給大家介紹了如何使用AbstractRoutingDataSource實(shí)現(xiàn)數(shù)據(jù)源動(dòng)態(tài)切換,需要的朋友可以參考下2024-03-03

