springboot配置檔案及預設的載入優先順序

2021-10-17 05:32:19 字數 2704 閱讀 2012

目錄

springboot 配置檔案型別

1.properties

2.yaml

springboot 配置檔案預設讀取優先順序(根據配置檔案位置與字尾)

1.不同位置的配置檔案讀取優先順序

2.相同位置下的不同檔案型別的讀取優先順序

springboot 特殊的配置檔案讀取方式

1.profiles配置

2.讀取指定的配置檔案

springboot中為我們提供了兩種配置檔案的格式,分別是properties和yaml

properties檔案是在springboot之前較為常用的配置檔案型別,內容格式為 「key=value」,例如:

#propreties檔案中以#或者!開頭表示注釋,比如此行是注釋

!此行這也是注釋,注釋的內容不會被讀取

server.port=9001

server.servlet.context-path=/value

以伺服器的埠和基礎路徑為例,表示使用9001埠,服務基礎路徑為「/value」

格式的語法基於hashtable ,一般來說只使用一行來表示乙個屬性的key和value,但是如果一定要換行的話,key不可以換行,value可以換行,但是要加上換行符\

properties檔案的內容格式還可以寫為「key:value」的方式,以冒號連線key和value,例如: server.port:9001

yaml是乙個相對來說可讀性更高的表達資料序列化的格式,使用yaml的格式來描述上述內容如下:

#注釋port: 9001

servlet:

context-path: /value

yaml的語法格式類似於json,層層包含,層級清晰,且顯示更簡潔,用樹狀表示層級關係既減少了重複名稱的出現,還增加了可讀性,一般來說更推薦使用yaml檔案作為配置檔案。

需要注意的是:每個屬性值與冒號之間必須要有乙個空格例如port:(空格)9001,冒號與值之間如果沒有空格的話將不能正確的讀取到屬性。

字尾名:一般為 .yaml 或  .yml

與properties檔案不同的是yaml檔案僅支援」#「開頭作為注釋。

springboot的預設讀取配置檔案的路徑有以下四個:

以我本地的專案所在的根路徑 (d:\testpro\bootconfig\)為例:

上面的排列順序也是springboot在載入配置檔案時的預設讀取順序,依次是:根路徑下的config資料夾  -->  根路徑下 --> classpath下的config資料夾  -->  classpath下。

截圖中的四個配置檔案上標有1,2,3,4分別對應上面的1-4,可以驗證,專案啟動時確實是最優先讀取根路徑下的config資料夾為中的配置檔案,使用的是(1)中的9001埠。

同時,大家可以發現四個配置檔案都配置了server.port屬性,專案啟動時是使用了(1)中配置埠,但是專案的訪問路徑context-path卻是使用了(4)中配置的「/9004」,這說明,springboot讀取配置檔案時,並不是只讀取優先順序最高的檔案中的內容,在讀取完成後,還會繼續按優先順序順序讀取其他位置的配置檔案,遇到已經配置的相同屬性,則取優先順序最高的配置值,而如果遇到前面的配置檔案中沒有配置的屬性,則會進行互補。

上面說了springboot的配置檔案一般使用properties和yaml兩種型別,共有三種檔案字尾 1) .properties  2) .yml  3) .yaml

這張截圖則說明,同一位置下這三種字尾的配置檔案的優先順序從高到底依次是  .properties  --->  .yml  ---> .yaml

配置檔案中使用profiles配置

上圖還說明,設定profiles之後,會完全讀取啟用的配置檔案內容,其他未啟用的配置檔案則會被忽略。

--spring.profiles.active=dev; 則會直接使用dev配置檔案中的內容,而不是jar包中之前配置的prod。

(2)指定jar包以外其他的配置檔案

需要注意的是:通過指定配置檔案來啟動springboot的方式,會僅讀取指定的配置檔案內容,不會和其他檔案進行互補。

且通過上面是示例還可以看出,指定的配置檔案優先順序是高於jar包內的其他配置檔案的。

通過以上不同的讀取springboot配置檔案的方法以及讀取優先順序,可以實現在不同場景下靈活切換不同的配置資訊。

Spring Boot配置檔案

方式 示例 檔案路徑 classpath或者classpath的 config目錄下 檔案內容 全域性通用配置 方式 通過environment獲取 示例 system.out println ctx.getenvironment getproperty env 方式一 configurationp...

springboot配置檔案

配置檔案的作用 修改springboot自動配置的預設值 yaml yaml ain t markup language yaml a markup language 是乙個標記語言 yaml isn t markup language 不是乙個標記語言 標記語言 以前的配置檔案大都是xml檔案,y...

springboot 配置檔案

1.配置檔案 系統配置 自定義配置 server host 空格 value windows檔案路徑,包含 可以直接寫。以空格個數區分層次 logging level root trace file log.txt server.host value 顯示單引號 包 value 包 顯示雙引號 包 ...