【SpringBoot】薛定谔的yaml

127 阅读2分钟

本文已参与[新人创作礼]活动,一起开启掘金创作之路。 ​

YAML是"YAML Ain't a Markup Language"(YAML不是一种标记语言)的递归缩写。在开发的这种语言时,YAML 的意思其实是:"Yet Another Markup Language"(仍是一种标记语言),但为了强调这种语言以数据做为中心,而不是以标记语言为重点,而用反向缩略语重命名。

 1、基本语法

key: value value和:之间有一个空格

大小写敏感:区分大小写

使用缩进表示层级关系

缩进不允许使用Tab,只允许使用空格。在Idea中可以使用Tab

缩进的空格数不重要,只要相同的层级的元素左对齐即可

例如我在yaml配置一个兴趣,不管前面有多少个空格,只要左对齐了,这三个兴趣都是一个层级的
interests:
        - 尤克里里
        - 篮球
        - 石原里美

 ​编辑

‘#’表示注释

''和""表示字符串内容,会转义/不会转义。例如名字"Zhangsan \n 李四",单引号会原封不动的输出,但是双引号会将\n变成换行符输出

2、数据类型

  • 字面量:单个的、不可分的值。如Date、Boolean、String、Number、Null

k: v 直接写就行,记得:和v之间有个空格,:只能用英文

  • 对象:键值对的集合 map hash set object,例如宠物类(k),宠物有姓名(k1),体重(k2)。

行内写法:k: {k1:v1,k2:v2}

或者

k:

k1: v1,

k2: v2

  • 数组:一组按次序排列的值 array,list,queue

行内写法: k: [v1,v2,v3]

或者

k:

- v1

- v2

- v3

3、示例

package com.you.boot.bean;

import lombok.Data;
import lombok.ToString;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Set;

@Data
@ToString
@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;
}

import lombok.Data;
import lombok.ToString;

@Data
@ToString
public class Pet {
    private String name;
    private Double weight;
}

application.yaml,以后忘了写法,看这个

person:
  userName: Zhangsan
#  双引号会转义一些特殊字符
#  单引号不会转义一些特殊字符 如/n
  boss: true
  birth: 2022/7/1
  age: 1
#  interests: [尤克里里,吉他]
  interests:
          - 尤克里里
          - 篮球
          - 石原里美
  animal: [旺财,小猪]
#  score:
#    english: 80
#    math: 90
  score: {english: 80,math: 90}
  salarys: [1200.00,12000.00,9999.00]
  pet:
    name: 小猪
    weight: 99.99
  allPets:
    sick:
      - {name: 小猪,weight: 99.99}
      - name: 小鸡
        weight: 88.88
      - name: 阿猫
        weight: 70.00
    health:
      - {name: 阿花,weight: 20.00}
      - {name: 阿叶,weight: 30.00}

4、自定义类绑定的配置提示

自己写的一些变量,在yaml编写的时候没有提示。

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

导入依赖后,重启一下项目,自己定义的变量就有提示了

​编辑

我们写的是userName,提示给的是user-name 也是可以的。

因为这一块只是方便我们编程,打包的时候没有用,所以我们加上这一段代码,让项目打包的时候不打包这个处理器

​编辑

<configuration>
     <excludes>
         <exclude>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configurationprocessor</artifactId>
         </exclude>
     </excludes>
</configuration>

 【继续努力~~~】​编辑

\