SringBoot之yaml語法

------------恢復內容開始------------

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

image-20220330213405731

2.2.2、根據提示打開文檔導入配置文件處理器

image-20220330213554228

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <optional>true</optional>
</dependency>

2.2.3、編寫yaml配置文件

image-20220330213638408

2.2.4、在SpringBoot的主程式的同級目錄下建包(必須這樣,約定大於配置)

image-20220330213842399

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);
    }

}

image-20220330214653994
------------恢復內容結束------------

Tags: