YAML的語法格式(Spring Boot初識 三)
目錄
一.使用Spring Initializer 快速建立Spring boot專案。
上次我們知道@EnableAutoConfiguration註解和@ComponentScan註解的區別?
那麼這次我們繼續往下來學習。
一.使用Spring Initializer 快速建立Spring boot專案。
建立的過程就略過了,我們說下面幾點。
1.建立專案的時候,我們需要保持聯網狀態。
2.建立的專案會自動在pom檔案中引入相應的jar包。
3.resource資料夾目錄結構:
static:儲存所有的靜態檔案,例如:js,css,images;
templates:儲存所有的模板頁面(Spring Boot 的預設jar包使用的是嵌入式的tomcat,預設不支援jsp頁面)。可以使用模板引擎(freemarker,thymeleaf)。
application.properties:Spring Boot應用的配置檔案(可以用來更改一些Spring Boot的預設配置)。
二.Spring Boot的配置檔案。
1.Spring Boot使用一個全域性的配置檔案(有兩種寫法,配置檔名稱是固定的):
application.properties
application.yml
2.配置檔案的作用:
Spring Boot在底層都給我們配置好了一些預設值。我們可以通過全域性配置檔案來修改其預設值。
Yaml(Yet Another Markup Language :也是一種標記語言)是一個可讀性高,用來表達資料序列化的格式。是以資料為中心,比xml更適合做配置(省去了繁重的標籤配置)。
xml配置如下:
<server>
<port>8081</port>
</server>
三.YAML的語法格式。
1.使用縮排來表示層級關係。
2.縮排時不允許使用tab鍵,只允許使用空格。
3.縮排時空格數目不重要,只要相同層級的元素左側對其即可。
4.屬性和值是大小寫敏感的。但是-x 和 X是一樣的,例如:last-name和lastName是相同的,都可以注入到實體類中的lastName屬性中。
5.用K: V的形式表示一對鍵值對(注意,:和 V之間一定要有空格)。如下:
server:
port: 8080
四.YAML支援的三種資料結構。
1.物件:鍵值對的集合(Map)。分為行內寫法和非行內寫法:
(1)非行內寫法:
server:
port: 8080
user:
name: joe
age: 24
(2)行內寫法:
user: {name: joe,age: 24}
2.陣列:一組按次序排列的值(List,Set)。分為行內寫法和非行內寫法:
用- 值表示陣列中的一個元素(- 和 值之間也要使用空格)。
(1)非行內寫法:
pets:
- cat
- dog
- pig
(2)行內寫法:
pets: [cat,dog,pig]
3.字面量:單一的,不可再分的值(數字,字串,Boolean)。
username: joe
直接用K: V 的形式來寫。字串預設不加單引號或者雙引號:
(1)雙引號“”:“會轉義”字串裡面的特殊字元。
name: “zhangsan \n lisi”:輸出;zhangsan 換行 lisi
(2)單引號‘’:“不會轉義”特殊字元。
name: “zhangsan \n lisi”:輸出;zhangsan \n lisi
總的來說,不管是哪種寫法,都是利用空格來表示層級關係,並且“-” 和 “:” 之後一定要有空格,然後才能寫value值。
五.YAML配置檔案值的獲取。
如果我們在yaml檔案中定義了一個物件user,那麼我們就可以建立一個實體類user,一一對應上yaml檔案中的user屬性。然後使用@ConfigurationProperties這個註解標註在user類上,
這樣執行程式後,配置檔案中的user屬性值會賦值給user實體類中的屬性。
@ConfigurationProperties註解的作用就是告訴Spring Boot將本類中的所有屬性和配置檔案中的相關配置(相關屬性)進行繫結。
注意:
@ConfigurationProperties 這個註解有一個引數是prefix(字首),它用來指定該實體類是用配置檔案中的哪個物件進行對映。本例子中就是@ConfigurationProperties(prefix = “user”)。
此外:
要想使用@ConfigurationProperties這個註解,我們首先要在pom檔案中引入如下依賴,這樣我們才能使用ConfigurationProperties這個註解:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<option>true</option>
</dependency>
@ConfigurationProperties註解要想能自動對映,還需要其標註的類是容器中的元件,所以該註解通常要個@Component註解一起使用。
六.配置檔案亂碼問題
亂碼是因為同一個字元的“輸入”和“輸出”的碼錶不一樣。
例如:張三 -----------------》0000 ----------------》李四;
輸入(碼錶) 輸出(碼錶)
所以,我們只需要配置下properties檔案的編碼和idea控制檯輸出編碼一致即可。
這篇文章收工。