一.yaml概述

        YAML 和XML或properties等一样,是一种标记语言,常用作配置文件。YAML 的语法和其他高级语言类似,并且可以简单表达清单、散列表,标量等数据形态。它使用空白符号缩进和大量依赖外观的特色,特别适合用来表达或编辑数据结构、各种配置文件。YAML 的配置文件后缀为 .yml.yaml

         SpringBoot中支持.properties.yml两种全局配置文件的书写方式,且配置文件名称是固定的,两种方式的区别如下:

  • application.properties
  • 语法结构 :key=value
  • application.yml
  • 语法结构 :key:空格 value

        由于yaml语法简单,结构清晰,因此成为了SpringBoot官方推荐使用的配置文件格式。

二.yaml语法规则

1.基本语法

  • 大小写敏感(key和value均区分大小写)
  • 使用缩进表示层级关系
  • 缩进不允许使用tab,只允许空格
  • 缩进的空格数不重要,只要相同层级的元素左对齐即可
  • '#'表示注释

 2.基本量/纯量

        基本量包括字符串String、布尔值boolean、数字、日期等最基本的,不可再分的值,其yaml语法规则如下:

基本语法:k: value

布尔值: - key: true #true,True都可以 - key: false #false,False都可以数字: - key: 123 - key: 3.14字符串: - str: 哈哈 #字符串默认不用加双引号或单引号,也可以使用双引号或者单引号 - str: 'Hello \n world' #单引号会转义特殊字符,输出 :Hello \n world - str: "Hello \n world" #双引号不会转义特殊字符,输出 :Hello 换行 world

3.对象、Map(键值对集合)

  • 标准写法:

       key:

                key1: value1

                key2: value2

  • 行内写法:

        key: {key1: value1,key2: value2}

4. 数组、列表(Array、List、Set)

  • 标准写法:

        key:

                - value1

                - value2

  • 行内写法:

        key: [value1,value2,value3]

 5.yaml配置实例

        我们要配置属性的类如下所示:

package com.atguigu.boot.bean;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import java.util.*;

@Component
@ConfigurationProperties(prefix = "person")
public class Person {
    private String userName;
    private boolean boss;
    private Date birth;
    private Integer age;
    private Pet pet;
    private String[] interests;
    private List<String> animal;
    private Map<String,Object> score;
    private Set<Double> salarys;
    private Map<String,List<Pet>> allpets;

    //get、set方法省略...

    @Override
    public String toString() {
        return "Person{" +
                "userName='" + userName + '\'' +
                ", boss=" + boss +
                ", birth=" + birth +
                ", age=" + age +
                ", pet=" + pet +
                ", interests=" + Arrays.toString(interests) +
                ", animal=" + animal +
                ", score=" + score +
                ", salarys=" + salarys +
                ", allpets=" + allpets +
                '}';
    }
}
package com.atguigu.boot.bean;


public class Pet {
    private String petName;
    private Double weight;

    //get、set方法省略...

    @Override
    public String toString() {
        return "Pet{" +
                "petName='" + petName + '\'' +
                ", weight=" + weight +
                '}';
    }
}

        其yaml配置文件内容如下:

person:
  #基本量配置
  userName: zhangsan
  boss: true
  birth: 2021/8/18
  age: 22
  #列表、数组配置
  interests:
    - 足球
    - 篮球
  animal: [小猫,小狗,小猪]
  salarys:
    - 3000
    - 999.98
    - 3.14
  #对象、Map配置
  pet:
    petName: jerry
    weight: 60.5
  score: {english: 80,math: 99}
  #复合结构配置
  allpets:
    sick:
      - {petName: tom,weight: 30.4}
      - petName: 宠物1号
        weight: 99.99
    healthy:
      - {petName: 宠物二号,weight: 88.8}
      - {petName: 宠物3号,weight: 66.6}

        其运行结果如下:

@RestController
public class HelloController {
    @Autowired
    Person person;

    @RequestMapping("/person")
    public Person person(){
        return person;
    }
}

yaml文件修改mysql时区 yaml 文件_配置文件

 

 三.自定义类的绑定提示

        我们自定义的类在写yaml配置时,不像官方配置一样有提示,这样写起来会很不方便。我们可以添加一个配置处理器插件,帮助我们提示书写。

<!-- 导入配置处理器,配置文件进行绑定就会有提示,需要重启 -->
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-configuration-processor</artifactId>
  <optional>true</optional>
</dependency>