springboot 配置檔案載入順序 以及啟動時指定配置檔案
配置檔案位置以及讀取的順序
存放目錄
Application屬性檔案,按優先順序排序,位置高的將覆蓋位置底的,順序1會覆蓋下面所有的
- 當前專案目錄下的一個/config子目錄
- 當前專案目錄
- 專案的resources即一個classpath下的/config包
-
專案的resources即classpath根路徑(root)
如圖:
讀取順序
如果在不同的目錄中存在多個配置檔案,它的讀取順序是:
1、config/application.properties(專案根目錄中config目錄下)
2、config/application.yml
3、application.properties(專案根目錄下)
5、resources/config/application.properties(專案resources目錄中config目錄下)
6、resources/config/application.yml
7、resources/application.properties(專案的resources目錄下)
8、resources/application.yml
注意
1、如果同一個目錄下,有application.yml也有application.properties,預設先讀取application.properties。
2、如果同一個配置屬性,在多個配置檔案都配置了,預設使用第1個讀取到的,後面讀取的不覆蓋前面讀取到的。
啟動時指定配置檔案
只指定埠
nohup java -jar ***.jar --server.port=8080 > info.log 2>&1 &
指定環境(spring.profiles.active)
nohup java -jar -Dspring.profiles.active=test ***.jar > info.log 2>&1 &
指定外部配置檔案
nohup java -jar ***.jar --spring.config.location=/xx/application.yml > info.log 2>&1 &
或者
nohup java -jar ***.jar --spring.config.location=/xx/xonfig/ > info.log 2>&1 &
特別注意:關於執行java -jar 命令時配置檔案相對位置問題
經測試:
在test 目錄下執行java -jar ./data/test.jar ,config目錄下的配置檔案是不生效的。
在data目錄下執行java -jar test.jar,config 目錄下的配置檔案生效。
猜測:在某個路徑下執行java -jar /xx/xx.jar 時、會在執行命令所在的路徑 尋找找config目錄或者配置檔案
可以在任何目錄下、通過java -jar /xx/xx.jar --spring.config.location=/xx/xonfig/ 來執行配置檔案的位置