YAML文件详解

​ YAML是 “YAML Ain’t a Markup Language” (YAML不是一种标记语言)的递归缩写。在开发的这种语言时,YAML 的意思其实是:“Yet Another Markup Language”(仍是一种标记语言),听着挺绕口,但其实他是以数据作为中心的一种语。

​ yaml文件是SpringBoot使用一个全局的配置文件 , 配置文件名称是固定的,是用于修改SpringBoot自动配置的默认值,因为SpringBoot在底层都给我们自动配置好了。作用与properties文件基本一致,但是比properties更方便,更强大。例如更改项目的端口号

properties文件

server.port=8080

yaml文件

server:
  port: 8080

1、yaml基础语法

重点:yaml文件对空格要求极其严格!!!

写法:字面量:普通的值 [ 数字,布尔值,字符串 ]

key: value
  • 1.1 单个存放(字符串、数字、布尔值)

    字符串默认不用加引号,如果需要有转译的就需要加,不过需要注意双引号和单引号的区别。

    ""双引号:不会转义特殊意义的字符,最终以需要表达的特殊意义输出,例如\t、\n

    hello: "Hello \n Word!!!"  #输出 Hello 换行 Word!!!
    

    ''单引号:会把特殊字符转义,最终以普通字符的形式输出

    hello: 'Hello \n Word!!!'  #输出 Hello \n Word!!!
    
  • 1.2 存放对象、Map(键值对)

    存放对象有两种方式

    第一种:第一层写对象名称,对象名称下面写属性名称,一定要注意缩进

    ​ 对象的属性名称要在同一层次内

    #有一个person类,该类下面有name、age两个属性
    person:
      name: 小明
      age: 19
    

    写的时候一定要注意空格,以下是一个错误写法:

    #有一个person类,该类下面有个name属性,name字段又有一个age字段
    person:
      name: 小明
    	age: 19
    

    第二种:行内写法

    dog: {name: 旺财,age: 3}
    

    Map集合的写法与对象差不多,也是两种一样的写

    map:
      k1: map1
      k2: map2
    
  • 1.3 存放数组(List、set)

    数组也有两种写法,同样要注意缩进。

    第一种:用"-"来表示数组中的一个元素,注意”-“后的一个空格,不能少

    hobby:
      - Play basketball
      - sing
    

    第二种:行内写法

    pets: [,,仓鼠]
    
  • 1.4 注意事项
    • 1、yaml文件对空格要求极其严格
    • 2、属性和值的大小写都是十分敏感的
    • 3、以缩进来控制层级关系,只要是左边对齐的一列数据都是同一个层级的

2、yaml注入配置文件

这才是yaml文件的强大之处,可以给实体类直接注入匹配值。

以前的如果我们需要给属性赋值,需要在属性上使用注解@Value或者到配置文件写上一大串配置,使用yaml后可以直接通过注解@ConfigurationProperties(prefix = "xxx")进行绑定。

  • 2.1 注入配置文件
    实体类
    //student实体类
    @Component
    @ConfigurationProperties(prefix = "student") //绑定yaml配置文件中的student
    public class Student { 
       private String name;
       private Integer age;
       private Date birthday; 
       private Boolean sex;
       private Map<String,Object> map;
       private List<Object> list;
       private Grade grade;
       //有参无参构造、get、set、toString方法
    }
    
    //Grade实体类
    @Component
    @ConfigurationProperties(prefix = "grade")
    public class Grade {
        private String name;
        private String director;
        //有参无参构造、get、set、toString方法
    }
    
    yaml文件
    student:
      name: 小明
      age: 18
      birthday: 1999/12/26
      sex: true
      map:
          k1: map1
          k2: map2
      list:
      	- list1
      	- list2
      grade:
      	name: 1812班
      	director: 王主任
    

    注入输出就可以看到,在yaml配置的值都能注入到实体类中
    在这里插入图片描述

3、yaml文件的小知识

在yaml文件中可以使用占位符松散绑定等小功能,以及多环境切换也十分简单。

  • 3.1 松散绑定

    不过使用松散绑定最好命名要规范,属性名称使用小驼峰命名。

    例如:lastNamelast-name是一样的

  • 3.2 占位符

    使用${},在里面写需要的内容

    例如:

    ​ 1、${random.uuid}生成随机字符串

    ​ 2、${random.int}生成随机整数

    ​ 3、k2: ${map.k1:map2}
    ​ 如果map.k1存在,则k2=map.k1的值
    ​ 如果map.k1不存在,则k2=map2

  • 3.3 多环境切换
    • 3.3.1 properties文件多环境切换

      多环境切换在properties文件中需要另外新建一个properties文件,通过-后面的标识进行切换。

      application.properties

      #设置端口号
      server.port=8080
      #切换到某个环境
      spring.profiles.active=dev
      

      application-dev.properties

      #设置端口号
      server.port=8081
      

      application-test.properties

      #设置端口号
      server.port=8082
      
    • 3.3.2 yaml文件多环境切换

      使用yaml文件后,只需要在同一个yaml文件内就可以分割出多个环境,然后进行调用,更好的展现了yaml文件的方便与复用性。通过“—”进行分割。

      application.yaml

      #设置端口号
      server:
        port: 8081
      #切换环境
      spring:
        profiles:
          active: dev
          
      #环境二,dev,利用---分割出一个环境
      ---
      server:
        prot: 8082
      #设置环境名称
      spring:
        profiles: dev
        
      #环境三,test
      ---
      server:
        prot: 8083
      #设置环境名称
      spring: 
        profiles: test
      
  • 9
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值