SpringBoot配置文件的加載位置實例詳解
springboot采納了建立生產(chǎn)就緒spring應(yīng)用程序的觀點。 Spring Boot優(yōu)先于配置的慣例,旨在讓您盡快啟動和運行。在一般情況下,我們不需要做太多的配置就能夠讓spring boot正常運行。在一些特殊的情況下,我們需要做修改一些配置,或者需要有自己的配置屬性。
SpringBoot啟動會掃描以下位置的application.yml或者 application.properties文件作為SpringBoot的默認(rèn)配置文件。
-file:./config/
-file:./
-classpath:/config/
-classpath:/
即根目錄下的config目錄下,然后是 根目錄下,然后是classpath路徑下的config目錄下,最后是classpath路徑下。
優(yōu)先級由高到低,高優(yōu)先級的配置會覆蓋低優(yōu)先級的配置。
eg.假如:根目錄下的config目錄下定義端口為8084, 根目錄下定義端口為8083 ,classpath路徑下的config目錄定義端口為8082,classpath路徑下定義端口為8081,最后啟動,啟動的端口為8084 ,高優(yōu)先級會覆蓋低優(yōu)先級。
注意: 并不是高優(yōu)先級的被加載了,低優(yōu)先級的就不會再加載,實際上是SpringBoot會從這四個位置全部加載主配置文件,并且還能產(chǎn)生互相配置的效果。
例如: 其它三個位置的主配置文件僅僅定義了端口,在最低優(yōu)先級的classpath路徑下的配置文件中配置項目訪問路徑,如下:

定義一個簡單的Controller ,用來測出訪問路徑。

請看:訪問路徑變?yōu)?:

除此外,我們還可以通過spring.config.location來改變默認(rèn)的配置文件位置。
項目打包好以后,我們可以使用命令行參數(shù)的形式,啟動項目的時候來指定配置文件的新位置;指定默認(rèn)加載的這些配置文件共同起作用形成互補(bǔ)配置。
eg : 在 G盤目錄下,創(chuàng)建一個application.properties文件(yml也可以),定義端口為8085
打包項目,啟動命令行:java -jar spring-boot-02-config-02.0.0.1-SNAPSHOT.jar --spring.config.location=G:/application.properties 回車運行。

瀏覽器訪問: http:localhost:8005/boot02/hello ,顯然外部指定的配置文件生效了,并且與之前的主配置文件形成了互補(bǔ)配置

外部配置加載順序
SpringBoot也可以從以下位置加載配置,優(yōu)先級從高到低,高優(yōu)先級的配置覆蓋低優(yōu)先級的配置,所有的配置形成互補(bǔ)配置。
1. 命令行參數(shù)
eg: java -jar spring-boot-02-config-02.0.0.1-SNAPSHOT.jar --server.port=8087
2. 來自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包放在一個目錄下,比如叫做 hello的文件夾,然后再該文件夾下新建一個名為application.yml的文件,其中指定
port為8088 ,訪問路徑為/boot ,然后命令行直接啟動項目。java -jar spring-boot-02-config-02.0.0.1-SNAPSHOT.jar
瀏覽器通過 localhost:8088/boot/hello 可以正常訪問,表示同級目錄下的配置文件生效了。


訪問情況如下:

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注解類上的propertySource
11. 通過SpringApplication.setDefaultProperties指定的默認(rèn)屬性。
所有支持的配置加載來源:
參考官方文檔 SpringBoot外部配置
總結(jié)
以上所述是小編給大家介紹的使用SpringBoot配置文件的加載位置實例詳解,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
spring @Cacheable擴(kuò)展實現(xiàn)緩存自動過期時間及自動刷新功能
用過spring cache的朋友應(yīng)該會知道,Spring Cache默認(rèn)是不支持在@Cacheable上添加過期時間的,雖然可以通過配置緩存容器時統(tǒng)一指定,本文主要介紹了如何基于spring @Cacheable擴(kuò)展實現(xiàn)緩存自動過期時間以及緩存即將到期自動刷新,2024-02-02
Spring sentinel哨兵模式相關(guān)原理解析
這篇文章主要介紹了Spring sentinel哨兵模式相關(guān)原理解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-11-11
Spring中如何使用@Value注解實現(xiàn)給Bean屬性賦值
這篇文章主要介紹了Spring中如何使用@Value注解實現(xiàn)給Bean屬性賦值的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-08-08
SpringBoot@Profile注解和Spring?EL(多環(huán)境注入)
為了方便, Spring還提供了 Profile機(jī)制, 使我們可以很方便地實現(xiàn)各個環(huán)境之間的切換,在使用DI來依賴注入的時候,能夠根據(jù)@profile標(biāo)明的環(huán)境,將注入符合當(dāng)前運行環(huán)境的相應(yīng)的bean,本文通過示例代碼介紹SpringBoot@Profile注解和Spring?EL,需要的朋友可以參考下2024-02-02
Java環(huán)境變量的設(shè)置方法(圖文教程)
想要成功配置Java的環(huán)境變量,那肯定就要安裝JDK,才能開始配置的。2013-05-05
SpringBoot整合MongoDB實現(xiàn)文件上傳下載刪除
這篇文章主要介紹了SpringBoot整合MongoDB實現(xiàn)文件上傳下載刪除的方法,幫助大家更好的理解和學(xué)習(xí)使用SpringBoot框架,感興趣的朋友可以了解下2021-05-05

