今天遇到一個奇怪的現象,給SpringBoot專案使用maven打成jar包,放到桌面。然后桌面上有一個appliation.yaml檔案,這個檔案跟jar包專案沒有任何關系,湊巧都在桌面。
當使用cmd命令,執行java -jar xxx.jar的時候,發現它竟然加載桌面上的application.yaml檔案,如果這個檔案不符合yaml格式,啟動專案還會報錯?
為什么java -jar xxx.jar的時候會加載同目錄下的applicaiton.yaml檔案?
uj5u.com熱心網友回復:
https://docs.spring.io/spring-boot/docs/2.3.2.RELEASE/reference/html/spring-boot-features.html#boot-features仔細看看
uj5u.com熱心網友回復:
2.3-2.4uj5u.com熱心網友回復:
SpringApplication loads properties from application.properties files in the following locations and adds them to the Spring Environment:A /config subdirectory of the current directory
The current directory
A classpath /config package
The classpath root
The list is ordered by precedence (properties defined in locations higher in the list override those defined in lower locations).
uj5u.com熱心網友回復:
檔案說,Spring會加載classpath root下的application.yaml檔案。想到一個問題,如果我們參考過來一個第三方的jar包b.jar,而這個jar包頂層目錄中包含一個application.yaml檔案,那么這個檔案會被Spring加載嗎?
uj5u.com熱心網友回復:
加載桌面的上 yml 不應該,可以手動指定 --spring-config-location=xxx.yml 。uj5u.com熱心網友回復:
Spring會加載classpath root下的application.yaml檔案。想到一個問題,如果我們參考過來一個第三方的jar包b.jar,而這個jar包頂層目錄中包含一個application.yaml檔案,那么這個檔案會被Spring加載嗎?
uj5u.com熱心網友回復:
nohup java -jar xx.jar 加載yml順序,同目錄下 》 classPathuj5u.com熱心網友回復:
如果加載了同目錄下的yml檔案,還會繼續加載classpath下的yml檔案嗎?
uj5u.com熱心網友回復:
不會了。。。。。uj5u.com熱心網友回復:
springboot默認會加載以下四種位置的組態檔:1、若application.yaml與系統jar包在統一目錄下的config目錄下
2、若application.yaml與系統jar包在統一目錄下
3、若application.yaml在系統jar包的resources根目錄的config目錄下
4、若application.yaml在系統jar包的resources根目錄
若這4個地方都有application.yaml檔案,則會全部加載,有同名的配置以前面的為準
uj5u.com熱心網友回復:
多謝。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/27805.html
標籤:Java EE
