yml介绍


YAML 简介

YAML 全称 YAML Ain’t Markup Language,它是一种以数据为中心的标记语言,比 XML 和 JSON 更适合作为配置文件。

使用

使用 YAML 作为属性配置文件(以 .yml 或 .yaml 结尾),需要将 SnakeYAML 库添加到 classpath 下
Spring Boot 中的 spring-boot-starter-web 或 spring-boot-starter 都对 SnakeYAML 库做了集成, 只要项目中引用了这两个 Starter 中的任何一个,Spring Boot 会自动添加 SnakeYAML 库到 classpath 下

简单的 application.yml 属性配置文件。
server:
port: 8081

YAML 语法

使用缩进表示层级关系。
缩进时不允许使用 Tab 键,只允许使用空格
缩进的空格数不重要,但同级元素必须左侧对齐
大小写敏感

例如:

spring:
  profiles: dev
  datasource:
    url: jdbc:mysql://127.0.01/banchengbang_springboot
    username: root
    password: root
    driver-class-name: com.mysql.jdbc.Driver

YAML 常用写法

YAML 支持以下三种数据结构:

  1. 对象:键值对的集合
  2. 数组:一组按次序排列的值
  3. 字面量:单个的、不可拆分的值

YAML 字面量写法

字面量是指单个的,不可拆分的值,例如:数字、字符串、布尔值、以及日期等。
在 YAML 中,使用“key:[空格]value”的形式表示一对键值对(空格不能省略),如 url: www.biancheng.net
字面量直接写在键值对的“value”中即可,且默认情况下字符串是不需要使用单引号或双引号的

  1. 使用单引号,则会转义特殊字符。
    name: 'zhangsan \n lisi'
    输出结果为:
    zhangsan \n lisi

  2. 使用双引号,则不会转义特殊字符,特殊字符会输出为其本身想表达的含义
    name: "zhangsan \n lisi"
    输出结果为:
    zhangsan
    lisi

YAML 对象写法

在 YAML 中,对象可能包含多个属性,每一个属性都是一对键值对;YAML 为对象提供了 2 种写法:

  1. 普通写法,使用缩进表示对象与属性的层级关系。

    website: 
      name: bianchengbang
      url: www.biancheng.net
  2. 行内写法:

    website: {name: bianchengbang,url: www.biancheng.net}

YAML 数组写法

YAML 使用“-”表示数组中的元素

  1. 普通写法如下:
    pets:
      -dog
      -cat
      -pig
  2. 行内写法
    pets: [dog,cat,pig]

复合结构

以上三种数据结构可以任意组合使用,以实现不同的用户需求,例如:

person:
  name: zhangsan
  age: 30
  pets:
    -dog
    -cat
    -pig
  car:
    name: QQ
  child:
    name: zhangxiaosan
    age: 2

YAML 组织结构

一个 YAML 文件可以由一个或多个文档组成,文档之间使用“—”作为分隔符,且个文档相互独立,互不干扰。
如果 YAML 文件只包含一个文档,则“—”分隔符可以省略。
多文档示例:

---
website:
  name: bianchengbang
  url: www.biancheng.net
---
website: {name: bianchengbang,url: www.biancheng.net}
pets:
  -dog
  -cat
  -pig
---
pets: [dog,cat,pig]
name: "zhangsan \n lisi"
---
name: 'zhangsan \n lisi'

文章作者: zrh
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 zrh !
  目录