SpringBoot配置文件的加載位置實(shí)例詳解
springboot采納了建立生產(chǎn)就緒spring應(yīng)用程序的觀點(diǎn)。 Spring Boot優(yōu)先于配置的慣例,旨在讓您盡快啟動(dòng)和運(yùn)行。在一般情況下,我們不需要做太多的配置就能夠讓spring boot正常運(yùn)行。在一些特殊的情況下,我們需要做修改一些配置,或者需要有自己的配置屬性。
SpringBoot啟動(dòng)會(huì)掃描以下位置的application.yml
或者 application.properties
文件作為SpringBoot的默認(rèn)配置文件。
-file:./config/
-file:./
-classpath:/config/
-classpath:/
即根目錄下的config目錄下,然后是 根目錄下,然后是classpath路徑下的config目錄下,最后是classpath路徑下。
優(yōu)先級(jí)由高到低,高優(yōu)先級(jí)的配置會(huì)覆蓋低優(yōu)先級(jí)的配置。
eg.假如:根目錄下的config目錄下定義端口為8084, 根目錄下定義端口為8083 ,classpath路徑下的config目錄定義端口為8082,classpath路徑下定義端口為8081,最后啟動(dòng),啟動(dòng)的端口為8084 ,高優(yōu)先級(jí)會(huì)覆蓋低優(yōu)先級(jí)。
注意: 并不是高優(yōu)先級(jí)的被加載了,低優(yōu)先級(jí)的就不會(huì)再加載,實(shí)際上是SpringBoot會(huì)從這四個(gè)位置全部加載主配置文件,并且還能產(chǎn)生互相配置的效果。
例如: 其它三個(gè)位置的主配置文件僅僅定義了端口,在最低優(yōu)先級(jí)的classpath路徑下的配置文件中配置項(xiàng)目訪(fǎng)問(wèn)路徑,如下:
定義一個(gè)簡(jiǎn)單的Controller ,用來(lái)測(cè)出訪(fǎng)問(wèn)路徑。
請(qǐng)看:訪(fǎng)問(wèn)路徑變?yōu)?:
除此外,我們還可以通過(guò)spring.config.location來(lái)改變默認(rèn)的配置文件位置。
項(xiàng)目打包好以后,我們可以使用命令行參數(shù)的形式,啟動(dòng)項(xiàng)目的時(shí)候來(lái)指定配置文件的新位置;指定默認(rèn)加載的這些配置文件共同起作用形成互補(bǔ)配置。
eg : 在 G盤(pán)目錄下,創(chuàng)建一個(gè)application.properties文件(yml也可以),定義端口為8085
打包項(xiàng)目,啟動(dòng)命令行:java -jar spring-boot-02-config-02.0.0.1-SNAPSHOT.jar --spring.config.location=G:/application.properties 回車(chē)運(yùn)行。
瀏覽器訪(fǎng)問(wèn): http:localhost:8005/boot02/hello ,顯然外部指定的配置文件生效了,并且與之前的主配置文件形成了互補(bǔ)配置
外部配置加載順序
SpringBoot也可以從以下位置加載配置,優(yōu)先級(jí)從高到低,高優(yōu)先級(jí)的配置覆蓋低優(yōu)先級(jí)的配置,所有的配置形成互補(bǔ)配置。
1. 命令行參數(shù)
eg: java -jar spring-boot-02-config-02.0.0.1-SNAPSHOT.jar --server.port=8087
2. 來(lái)自java:comp/env的NDI屬性
3. Java系統(tǒng)屬性(System.getProperties() )
4. 操作系統(tǒng)環(huán)境變量
5. RandomValuePropertySource配置的random.*屬性值
---- 由jar包外向jar包內(nèi)進(jìn)行尋找:
優(yōu)先加載帶profile
6. jar包外部的application-{profile}.properties或application.yml(帶spring.profile)配置文件
將打好的jar包放在一個(gè)目錄下,比如叫做 hello的文件夾,然后再該文件夾下新建一個(gè)名為application.yml的文件,其中指定
port為8088 ,訪(fǎng)問(wèn)路徑為/boot ,然后命令行直接啟動(dòng)項(xiàng)目。java -jar spring-boot-02-config-02.0.0.1-SNAPSHOT.jar
瀏覽器通過(guò) localhost:8088/boot/hello 可以正常訪(fǎng)問(wèn),表示同級(jí)目錄下的配置文件生效了。
訪(fǎng)問(wèn)情況如下:
7. jar包內(nèi)部的application-{profile}.properties或application.yml(帶spring.profile)配置文件
8. jar包外部的application.properties或application.yml(不帶spring.profile)配置文件
8. jar包外部的application.properties或application.yml(不帶spring.profile)配置文件
9. jar包內(nèi)部的application.properties或application.yml(不帶spring.profile)配置文件
10. @Configuration注解類(lèi)上的propertySource
11. 通過(guò)SpringApplication.setDefaultProperties指定的默認(rèn)屬性。
所有支持的配置加載來(lái)源:
參考官方文檔 SpringBoot外部配置
總結(jié)
以上所述是小編給大家介紹的使用SpringBoot配置文件的加載位置實(shí)例詳解,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
如何通過(guò)zuul添加或修改請(qǐng)求參數(shù)
這篇文章主要介紹了如何通過(guò)zuul添加或修改請(qǐng)求參數(shù)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07Spring+Quartz配置定時(shí)任務(wù)實(shí)現(xiàn)代碼
這篇文章主要介紹了Spring+Quartz配置定時(shí)任務(wù)實(shí)現(xiàn)代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04基于SpringBoot實(shí)現(xiàn)代碼在線(xiàn)運(yùn)行工具
這篇文章主要介紹了如何利用SpringBoot實(shí)現(xiàn)簡(jiǎn)單的代碼在線(xiàn)運(yùn)行工具(類(lèi)似于菜鳥(niǎo)工具),文中的示例代碼講解詳細(xì),需要的可以參考一下2022-06-06Java中將多個(gè)PDF文件合并為一個(gè)PDF的方法步驟
這篇文章主要給大家介紹了關(guān)于Java中將多個(gè)PDF文件合并為一個(gè)PDF的方法步驟, Java PDF合并是指將多個(gè)PDF文件合并成一個(gè)PDF文件的過(guò)程,需要的朋友可以參考下2023-09-09multi-catch和try-catch異常處理知識(shí)點(diǎn)詳解
在本篇文章里我們給大家分享了一篇關(guān)于multi-catch和try-catch異常處理知識(shí)點(diǎn)內(nèi)容,有需要的朋友們可以參考學(xué)習(xí)下。2019-11-11Java的Hibernate框架中集合類(lèi)數(shù)據(jù)結(jié)構(gòu)的映射編寫(xiě)教程
Hibernate可以將Java中幾個(gè)內(nèi)置的集合結(jié)構(gòu)映射為數(shù)據(jù)庫(kù)使用的關(guān)系模型,下面我們就來(lái)看一下Java的Hibernate框架中集合類(lèi)數(shù)據(jù)結(jié)構(gòu)的映射編寫(xiě)教程:2016-07-07SpringSecurity?Web權(quán)限方案實(shí)現(xiàn)全過(guò)程
Spring Security是一個(gè)功能強(qiáng)大且高度可定制的身份驗(yàn)證和授權(quán)框架,專(zhuān)門(mén)用于保護(hù)Java應(yīng)用程序的Web集成,下面這篇文章主要給大家介紹了關(guān)于SpringSecurity?Web權(quán)限方案實(shí)現(xiàn)的相關(guān)資料,需要的朋友可以參考下2024-01-01Java中CountDownLatch進(jìn)行多線(xiàn)程同步詳解及實(shí)例代碼
這篇文章主要介紹了Java中CountDownLatch進(jìn)行多線(xiàn)程同步詳解及實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下2017-03-03