目錄
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 包 顯示雙引號 包 ...