1. 程式人生 > 其它 >檔案格式和副檔名不匹配.檔案可能已損壞_spring boot 學習筆記5(application.yaml 配置檔案)

檔案格式和副檔名不匹配.檔案可能已損壞_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) 再次執行測試

57657500706f6dc7b3315bc7e85cfca7.png

可以看出,測試方法configurationTest()同樣執行成功,並正確打印出了 Person實體類物件。

需要說明的是,本次使用application.yaml配置檔案進行測試時需要提前將application.properties配置 檔案中編寫的配置註釋,這是因為application.properties配置檔案會覆蓋application.yaml配置檔案