博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringBoot第三篇:配置文件详解二
阅读量:4981 次
发布时间:2019-06-12

本文共 3675 字,大约阅读时间需要 12 分钟。

作者:追梦1819

原文:
版权声明:本文为博主原创文章,转载请附上博文链接!

前言

  本文主要讲 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  Barstr8: > # “>” 最后一行跟一个换行符  Foo  Barstr9: |  Foostr10: |+ # +表示保留文字块末尾的换行  Foostr11: |- # -表示删除字符串末尾的换行  Foostr12: | # 字符串之中可以插入 HTML 标记 

    段落

  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 官网:
  2. yaml 在线校验:
  3. 源码:

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

1183871-20190514101510500-1976111210.jpg

转载于:https://www.cnblogs.com/yanfei1819/p/10860604.html

你可能感兴趣的文章
let 与 const 的用法
查看>>
使用HttpClient发送文件流到服务器端
查看>>
python-进程
查看>>
Atom
查看>>
Jenkins-在windows上配置自动化部署(Jenkins+Gitblit)
查看>>
Marvel – 将图像和源文件转换成互动,共享的原型
查看>>
如何给网站瘦身?图文并茂的前端性能优化指南
查看>>
codeforce 6D-6E(dp,线段树)
查看>>
python学习笔记(六)循环
查看>>
[置顶] myEclipse8.5或者eclipse手工安装jd插件(myEclipse8.5或eclipse内直接查看.class文件,jd反编译工具)...
查看>>
MST最小生成树及Prim普鲁姆算法
查看>>
Access连接数据源配置(新手必知)
查看>>
(3)排序之直接插入排序
查看>>
知识图谱技术分享会----有关知识图谱构建的部分关键技术简介及思考
查看>>
TCP/IP、Http、Socket的区别
查看>>
c#数字图像处理算法(最终版)
查看>>
(原创)robotium自学笔记
查看>>
搭建SSI开发框架原理
查看>>
原版的WEB认证客户端,提供源代码,让用户自行编译
查看>>
小程序弹出框
查看>>