Spring Boot 使用一個全局的配置文件,配置文件名是固定的
application.properties / application.yml
- 配置文件的作用:修改SpringBoot自動配置的默認值
YAML(YAML Ain't Markup Language)
- YAML A Markup Language:是一個標(biāo)記語言
- YAML isn't Markup Language:不是一個標(biāo)記語言怜姿;
? YAML是 “YAML不是一種標(biāo)記語言“ 的外語縮寫;但為了強調(diào)這種語言以數(shù)據(jù)做為中心整葡,而不是以置標(biāo)語言為重點,而用返璞詞重新命名讥脐。它是一種直觀的能夠被電腦識別的數(shù)據(jù)序列化格式遭居,是一個可讀性高并且容易被人類閱讀,容易和腳本語言交互旬渠,用來表達資料序列的編程語言俱萍。
? 它是類似于標(biāo)準(zhǔn)通用標(biāo)記語言的子集XML的數(shù)據(jù)描述語言,語法比XML簡單很多告丢。
標(biāo)記語言:
- 以前的配置文件枪蘑;大多都使用的是 xxxx.xml文件;
- YAML:以數(shù)據(jù)為中心岖免,比json岳颇、xml等更適合做配置文件;
YAML:配置例子
server:
port: 8080
XML:
<server>
<port>8080</port>
</server>
YAML語法
-
基本語法
key:空格 value
表示一對鍵值對 key:空格必須有以空格的縮進 來控制層次關(guān)系 只要是左對齊的一列配置數(shù)據(jù)颅湘,都是同一個層級的配置
server: port: servlet: context-path: context-parameters: spring: application: name:
- 其中 server和spring 是同一層級的话侧,都自為一個配置數(shù)據(jù)對象
-
port和servlet 是server對象里的一個屬性配置 是同一層級的配置數(shù)據(jù)
- port為簡單數(shù)據(jù)類型的一個配置屬性
- servlet 是一個對象類型的屬性
- context-path和context-parameters 都是 servlet里的屬性配置 是同一層級的配置數(shù)據(jù)
-
值的寫法
key: 普通的配置值(數(shù)字,字符串闯参,布爾瞻鹏,小數(shù)...)
注:
字符串默認不用加上單引號或者雙引號悲立;
-
"demo \n 01":雙引號;不會在解析時自動轉(zhuǎn)義字符串里面的特殊字符新博;特殊字符會用作本身想表示的意思
name: "demo \n 01" #輸出為-demo 換行 01
-
'demo \n 02':單引號薪夕;會轉(zhuǎn)義特殊字符,特殊字符最終只是一個普通的字符串?dāng)?shù)據(jù)
name: 'demo \n 02' #輸出為-demo \n 02
yaml里對象叭披、map寥殖、數(shù)組配置的寫法
對象和map的寫法相同
- 對象:屬性名: 值
- map:key: value
-
標(biāo)準(zhǔn)寫法
project: id: PM201807190001 name: 測試項目 context:該項目是個示例項目
-
行內(nèi)寫法
project: {id: PM201807190001,name: 測試項目,context: 該項目是個示例項目}
數(shù)組和集合(List玩讳、Set)配置的寫法
數(shù)組用 -(空格)值 表示數(shù)組中的一個元素
-
標(biāo)準(zhǔn)寫法
projects: - 項目1 - 項目2 - 項目3
-
行內(nèi)寫法
projects: [項目1,項目2,項目3]
注:yaml支持對象里的 復(fù)雜類型配置
project:
id: PM201807190002
isOver: false
age: 2
unit: year
principalUsers:
- {name: zhangsan,id: user_01}
- {name: lisi,id: user_02}
property:
recipe: [cement,brick,floor]