1. 程式人生 > 實用技巧 >springboot 配置檔案載入順序 以及啟動時指定配置檔案

springboot 配置檔案載入順序 以及啟動時指定配置檔案

配置檔案位置以及讀取的順序

存放目錄

Application屬性檔案,按優先順序排序,位置高的將覆蓋位置底的,順序1會覆蓋下面所有的

  1. 當前專案目錄下的一個/config子目錄
  2. 當前專案目錄
  3. 專案的resources即一個classpath下的/config包
  4. 專案的resources即classpath根路徑(root)

    如圖:

讀取順序

如果在不同的目錄中存在多個配置檔案,它的讀取順序是:
1、config/application.properties(專案根目錄中config目錄下)
2、config/application.yml
3、application.properties(專案根目錄下)

4、application.yml
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個讀取到的,後面讀取的不覆蓋前面讀取到的。

3、建立SpringBoot專案時,一般的配置檔案放置在專案的resources目錄下,因為配置檔案的修改,通過熱部署不用重新啟動專案,而熱部署的作用範圍是classpath下

啟動時指定配置檔案

只指定埠
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/ 來執行配置檔案的位置