• 【SpringBoot】薛定谔的yaml


    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、示例

    1. package com.you.boot.bean;
    2. import lombok.Data;
    3. import lombok.ToString;
    4. import org.springframework.boot.context.properties.ConfigurationProperties;
    5. import org.springframework.stereotype.Component;
    6. import java.util.Date;
    7. import java.util.List;
    8. import java.util.Map;
    9. import java.util.Set;
    10. @Data
    11. @ToString
    12. @Component
    13. @ConfigurationProperties(prefix = "person")
    14. public class Person {
    15. private String userName;
    16. private Boolean boss;
    17. private Date birth;
    18. private Integer age;
    19. private Pet pet;
    20. private String[] interests;
    21. private List<String> animal;
    22. private Map<String,Object>score;
    23. private Set<Double> salarys;
    24. private Map<String,List<Pet>>allPets;
    25. }

     

    1. import lombok.Data;
    2. import lombok.ToString;
    3. @Data
    4. @ToString
    5. public class Pet {
    6. private String name;
    7. private Double weight;
    8. }

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

    1. person:
    2. userName: Zhangsan
    3. # 双引号会转义一些特殊字符
    4. # 单引号不会转义一些特殊字符 如/n
    5. boss: true
    6. birth: 2022/7/1
    7. age: 1
    8. # interests: [尤克里里,吉他]
    9. interests:
    10. - 尤克里里
    11. - 篮球
    12. - 石原里美
    13. animal: [旺财,小猪]
    14. # score:
    15. # english: 80
    16. # math: 90
    17. score: {english: 80,math: 90}
    18. salarys: [1200.00,12000.00,9999.00]
    19. pet:
    20. name: 小猪
    21. weight: 99.99
    22. allPets:
    23. sick:
    24. - {name: 小猪,weight: 99.99}
    25. - name: 小鸡
    26. weight: 88.88
    27. - name: 阿猫
    28. weight: 70.00
    29. health:
    30. - {name: 阿花,weight: 20.00}
    31. - {name: 阿叶,weight: 30.00}

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

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

    1. <dependency>
    2. <groupId>org.springframework.boot</groupId>
    3. <artifactId>spring-boot-configuration-processor</artifactId>
    4. <optional>true</optional>
    5. </dependency>

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

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

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

    1. <configuration>
    2. <excludes>
    3. <exclude>
    4. <groupId>org.springframework.boot</groupId>
    5. <artifactId>spring-boot-configurationprocessor</artifactId>
    6. </exclude>
    7. </excludes>
    8. </configuration>

     【继续努力~~~】

     

  • 相关阅读:
    安全狗受邀亮相第二届工控中国大会
    前缀,中缀,后缀表达式规则 [数据结构][Java]
    从零实现的浏览器Web脚本
    openlayes + vue 最新版本 实现 轨迹移动动画
    记录使用vant组件库的Popup的问题
    福建建筑模板厂家-能强优品木业
    数据结构与算法之Hash&BitMap
    华为机试 - 最小调整顺序次数
    自动化测试的重要性:为何追求自动化?
    技术分享 | Jenkins job 机制该如何使用?
  • 原文地址:https://blog.csdn.net/m0_59792745/article/details/125613886