SpringBoot第三篇:配置文件详解二

作者:追梦1819
原文:https://www.cnblogs.com/yanfei1819/p/10615605.html
版权声明:本文为博主原创文章,转载请附上博文链接!


前言

  本文主要讲 yaml 文件。

  传统的配置文件有 .xml、.properties、.json 等格式的文件。yaml 文件想对于传统的文件来说,减少很多不必要的标签或者括号,阅读也更加清晰简单。SpringBoot 官方推荐的配置文件,除了 .properties ,还有 yaml 。


概述

  yaml 文件其实与properties 文件差别不大,主要是层次结构更加明显,阅读性更强。

  以下是百度百科的解释:

  YAML 是 YAML 不是一种标记语言的外语缩写;但为了强调这种语言以数据做为中心,而不是以置标语言为重点,而用返璞词重新命名。它是一种直观的能够被电脑识别的数据序列化格式,是一个可读性高并且容易被人类阅读,容易和脚本语言交互,用来表达资料序列的编程语言。

  它是类似于标准通用标记语言的子集XML的数据描述语言,语法比XML简单很多。


语法

  • 大小写敏感;
  • 使用缩进表示层级关系;
  • 禁止使用 tab 缩进,只能使用空格键 , 建议使用两个空格;
  • 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可;
  • # 表示注释,从这个字符一直到行尾,都会被解析器忽略;
  • 字符串可以不用引号,也可以使用单引号或者双引号。


数据结构

  • 对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)
  • 数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)
  • 纯量(scalars):单个的、不可再分的值


实例

注意:

  • 使用冒号:表示键值对, 冒号后面需要有一个空格, key需要顶格写,前面不能有空格 同一缩进的所有键值对属于一个map;
  • 在一个文件中,可同时包含多个文件,并"---"分隔;
  • 选择性的符号"..."可以用来表示文件结尾.
  1. 对象:

    单个值:

    name: demo

    对象:

    person:
      name: yaml
      age: 23

    或者为:

    person: {name: 'yaml', age: 26}
  2. 数组

    fruit:
      - apple
      - orange
    fruit: ['apple', 'orange']
    teacher:
      - studentA
      - studentB
      - 
         - bookA
         - bookB

    等同:

    teacher: ['studentA', 'studentB',['bookA', 'bookB']]

    注意:

    当键是数组或者对象时需要使用问号来标记

    ?[blue, reg, green]: xxx
    ?{a:xx, b:xx}: xx
  3. 复合结构

      数据和对象可以组合使用。

  4. 纯量

      纯量是最基本的、不可再分的值。

    • 字符串

    • 布尔值

    • 整数

    • 浮点数

    • Null

    • 时间

    • 日期

  5. 字符串

      字符串是最常用的,也是比较复杂的数据类型。以下细细分析。

    # 单行字符串
    str: 这是一行字符串   # 字符串默认不使用引号表示
    str2: '内容: 字符串' # 如果字符串之中包含空格或特殊字符,需要放在引号之中
    str3: '内容\n字符串'  # 单引号和双引号都可以使用,双引号不会对特殊字符转义
    str4: "内容\n字符串"  # 双引号对特殊字符不转义
    str5: 'labor''s day' # 单引号之中如果还有单引号,需要使用单引号转义
    
    # 多行字符串(# 多行字符串(从第二行开始,必须有一个单空格缩进,换行符会被转为空格)
    str6: 这是一段  
      多行
      字符串
    str7: | # "|"表示每行末尾都跟一个换行符
      Foo
      Bar
    str8: > # “>” 最后一行跟一个换行符
      Foo
      Bar
    str9: |
      Foo
    str10: |+ # +表示保留文字块末尾的换行
      Foo
    str11: |- # -表示删除字符串末尾的换行
      Foo
    str12: | # 字符串之中可以插入 HTML 标记
     <p style="color: red">
        段落
     </p>
    
  6. 类型转换

      使用两个感叹号跟要转换的基本数据类型,单引号:用于转换自定义对象。

    #下面是内置类型
    #!!int               # 整数类型
    #!!float             # 浮点类型
    #!!bool              # 布尔类型
    #!!str               # 字符串类型
    #!!binary            # 也是字符串类型
    #!!timestamp         # 日期时间类型
    #!!null              # 空值
    #!!set               # 集合
    #!!omap, !!pairs     # 键值列表或对象列表
    #!!seq               # 序列,也是列表
    #!!map               # 键值表
    test: !!str 123
    
  7. 锚点和引用

      锚点&和别名*,可以用来引用。

     - &index1 a
     - b
     - *index1


数据类型约定

  对一些常用数据类型的表示格式进行了约定,包括:

 integer: 12345     # 整数标准形式
 octal: 0o34        # 八进制表示,第二个是字母 o
 hex: 0xFF          # 十六进制表示
 
 float: 1.23e+3     # 浮点数
 fixed: 13.67       # 固定小数
 minmin: -.inf      # 表示负无穷
 notNumber: .NaN    # 无效数字
 
 null:              # 空值
 boolean: [true, false] # 布尔值
 string: '12345's    # 字符串
 
 date: 2015-08-23   # 日期
 datetime: 2015-08-23T02:02:00.1z  # 日期时间
 iso8601: 2015-08-23t21:59:43.10-05:00  # iso8601 日期格式
 spaced: 2015-08-23 21:59:43.10 -5      # ?

  “!”(叹号)显式指示类型,或自定义类型标识。单叹号通常是自定义类型,双叹号是内置类型

 isString: !!str 2015-08-23     # 强调是字符串不是日期数据
 picture: !!binary |            # Base64  图片
     R0lGODlhDAAMAIQAAP//9/X
     17unp5WZmZgAAAOfn515eXv
     Pz7Y6OjuDg4J+fn5OTk6enp
     56enmleECcgggoBADs=
 #下面是内置类型
 !!int               # 整数类型
 !!float             # 浮点类型
 !!bool              # 布尔类型
 !!str               # 字符串类型
 !!binary            # 也是字符串类型
 !!timestamp         # 日期时间类型
 !!null              # 空值
 !!set               # 集合
 !!omap, !!pairs     # 键值列表或对象列表
 !!seq               # 序列,也是列表
 !!map               # 键值表
 #下面是一些例子:
 --- !!omap
 - Mark: 65
 - Sammy: 63
 - Key: 58
 --- !!set           # 注意,“?”表示键为列表,在这里列表为 null
 ? Mark
 ? Sammy
 ? Key
 # 下面是自定义的类型或标识
 %TAG ! tag:clarkevans.com,2002:   # % 是指令符号
 --- !shape
 # Use the ! handle for presenting
 # tag:clarkevans.com,2002:circle
 - !circle
   center: &ORIGIN {x: 73, y: 129}
   radius: 7
 - !line
   start: *ORIGIN
   finish: { x: 89, y: 102 }
 - !label
   start: *ORIGIN
   color: 0xFFEEBB
   text: Pretty vector drawing.


参考

  1. yaml 官网:https://yaml.org/spec/1.2/spec.html
  2. yaml 在线校验:http://www.bejson.com/validators/yaml/

<全文完>

本系列文章同步于公众号:【技术与人生】

猜你喜欢

转载自www.cnblogs.com/yanfei1819/p/10860604.html