檔案格式和副檔名不匹配.檔案可能已損壞_spring boot 學習筆記5(application.yaml 配置檔案)
技術標籤:檔案格式和副檔名不匹配.檔案可能已損壞
YAML檔案格式是Spring Boot支援的一種JSON超集檔案格式,相較於傳統的Properties配置檔案,
YAML檔案以資料為核心,是一種更為直觀且容易被電腦識別的資料序列化格式。application.yaml配置 檔案的工作原理和application.properties是一樣的,只不過yaml格式配置檔案看起來更簡潔一些。
- YAML檔案的副檔名可以使用.yml或者.yaml。
- application.yml檔案使用"key:(空格)value”格式配置屬性,使用縮排控制層級關係。
這裡,針對不同資料型別的屬性值,介紹一下YAML
(1) value值為普通資料型別(例如數字、字串、布林等)
當YAML配置檔案中配置的屬性值為普通資料型別時,可以直接配置對應的屬性值,同時對於字串類 型的屬性值,不需要額外新增引號,示例程式碼如下
server:port: 8081path: /hello
上述程式碼用於配置server的port和path屬性,port和path屬於一個級別
(2) value值為陣列和單列集合
當YAML配置檔案中配置的屬性值為陣列或單列集合型別時,主要有兩種書寫方式:縮排式寫法和行內 式寫法。
其中,縮排式寫法還有兩種表示形式,示例程式碼如下
person: hobby: - play - read - sleep
或者使用如下示例形式
person: hobby:play, read, sleep
上述程式碼中,在YAML配置檔案中通過兩種縮排式寫法對person物件的單列集合(或陣列)型別的愛好 hobby賦值為play、read和sleep。其中一種形式為"-(空格)屬性值”,另一種形式為多個屬性值之前 加英文逗號分隔(注意,最後一個屬性值之後不要加逗號)。
person: hobby: [play,read,sleep]
通過上述示例對比發現,YAML配置檔案的行內式寫法更加簡明、方便。另外,包含屬性值的中括
號"[]”還可以進一步省略,在進行屬性賦值時,程式會自動匹配和校對
(3) value值為Map集合和物件
當YAML配置檔案中配置的屬性值為Map集合或物件型別時,YAML配置檔案格式同樣可以分為兩種書寫 方式:縮排式寫法和行內式寫法。
其中,縮排式寫法的示例程式碼如下
person: map: k1: v1 k2: v2
對應的行內式寫法示例程式碼如下
person: map: {k1: v1,k2: v2}
在YAML配置檔案中,配置的屬性值為Map集合或物件型別時,縮排式寫法的形式按照YAML檔案格式編 寫即可,而行內式寫法的屬性值要用大括號"{}”包含。
接下來,在Properties配置檔案演示案例基礎上,通過配置application.yaml配置檔案對Person物件進 行賦值,具體使用如下
(1) 在專案的resources目錄下,新建一個application.yaml配置檔案,在該配置檔案中編寫為Person 類設定的配置屬性
#對實體類物件Person進行屬性配置person: id: 1 name: lucy hobby:[吃飯,睡覺,打豆豆] family: [father,mother] map: {k1: v1,k2: v2} pet: {type : dog,name : 旺財}
(2) 再次執行測試
可以看出,測試方法configurationTest()同樣執行成功,並正確打印出了 Person實體類物件。
需要說明的是,本次使用application.yaml配置檔案進行測試時需要提前將application.properties配置 檔案中編寫的配置註釋,這是因為application.properties配置檔案會覆蓋application.yaml配置檔案