SringBoot之yaml語法
- 2022 年 3 月 31 日
- 筆記
- springboot
------------恢復內容開始------------
SpringBoot之yaml語法
1、配置文件
官方配置文檔太多了,根本記不住!
怎麼辦吶-->了解原理
SpringBoot使用了一個全局配置文件,且配置文件的名稱是固定的:
- application.properties
- 語法結構:key=value
- application.yaml
- 語法結構:key: 空格 value
2、YAML
YAML(/ˈjæməl/,尾音類似camel駱駝)是一個可讀性高,用來表達數據序列化的格式。
YAML是"YAML Ain't a Markup Language"(YAML不是一種標記語言)的遞歸縮寫。在開發的這種語言時,YAML 的意思其實是:"Yet Another Markup Language"(仍是一種標記語言),但為了強調這種語言以數據做為中心,而不是以標記語言為重點,而用反向縮略語重命名。(來自於百度百科詞條解釋)
YAML和XML的區別(以配置埠號為例):
YAML配置:
server:
address: 8081
XML配置 :
<server>
<port>8081<port>
<server>
2.1、YAML語法
基礎語法--> key:value
#普通的key value鍵值對
name: liberty
#對象
student:
name: liberty
age: 20
#對象的行內寫法
student: {name: liberty,age: 20}
#數組
pets:
- dog
- cat
- pig
#數組的行內寫法
pets: [dog,cat,pig]
注意:yaml中對於空格的要求極其嚴格
student:
name: liberty
age:20
(age前面加一個空格的話相當於age是name下面的屬性)
student:
name: liberty
age: 20
(這樣相當於三個對象)
2.2、注入配置文件
程式實現
2.2.1、將默認的application.properties後綴改為yaml
2.2.2、根據提示打開文檔導入配置文件處理器
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
2.2.3、編寫yaml配置文件
2.2.4、在SpringBoot的主程式的同級目錄下建包(必須這樣,約定大於配置)
package com.liberty.pojo;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Component
/**
* 註解意思是將此添加到SpringBoot組件裡面
*/
@ConfigurationProperties(prefix = "person")
/**
* ConfigurationProperties告訴SpringBoot將本類中的所有屬性和配置文件中相關配置進行綁定
* 參數prefix = "person" 將配置文件中的person下面的所有屬性一一對應
*/
public class Person
{
private String name;
private Integer age;
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public Person(String name, Integer age) {
this.name = name;
this.age = age;
}
public Person() {
}
}
2.2.5、測試無誤後,在測試單元中進行測試,看看是否注入成功
package com.liberty;
import com.liberty.pojo.Person;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class Demo02ApplicationTests {
//自動裝配
@Autowired
Person person;
@Test
void contextLoads() {
System.out.println(person);
}
}
------------恢復內容結束------------

