前言

springboot的配置文件application.yml.yml是YAML(YAML Ain’t Markup Language)语言的文件,以数据为中心,比json.xml更适合做配置文件.所以我们来了解一下它的常用语法

YAML语法

基本语法


  • 使用缩进表示层级关系
  • 缩进时不允许使用Tab键,只运行使用空格(有些公司在编辑代码的时候, 也不允许使用tab键,因为不同的编辑器可能对于tab键的缩进是不一样的)
  • 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
  • 大小写敏感

支持的数据结构


  • 对象: 键值对的集合
  • 数组:一组按次序排列的值
  • 字面量:单个的,不可再分的值

常用写法

  • 对象(Map)

    • 对象的一组键值对,使用冒号分割,如username: kwy
    • 冒号后面跟空格来分开键值;
    • {k: v}写法

# YAML
hero:
hp: 34
sp: 8
level: 4
orc:
hp: 12
sp: 0
level: 2
{'hero': {'hp': 34, 'sp': 8, 'level': 4}, 'orc': {'hp': 12, 'sp': 0, 'level': 2}}
  • 数组

    • 一组连词线(-)开头的行,构成一个数组
    • 对象可以组合使用

# YAML
- The Dagger 'Narthanc'
- The Dagger 'Nimthanc'
- The Dagger 'Dethanc'
# Java
["The Dagger 'Narthanc'", "The Dagger 'Nimthanc'", "The Dagger 'Dethanc'"]
  • 嵌套
    • map嵌套map
# YAML
hero:
hp: 34
sp: 8
level: 4
orc:
hp: 12
sp: 0
level: 2
#java
{'hero': {'hp': 34, 'sp': 8, 'level': 4}, 'orc': {'hp': 12, 'sp': 0, 'level': 2}}
  • map嵌套list
# YAML
left hand:
- Ring of Teleportation
- Ring of Speed

right hand:
- Ring of Resist Fire
- Ring of Resist Cold
- Ring of Resist Poison
#JAVA
{'right hand': ['Ring of Resist Fire', 'Ring of Resist Cold', 'Ring of Resist Poison'],
'left hand': ['Ring of Teleportation', 'Ring of Speed']}
  • list嵌套list
# YAML
-
- HTML
- LaTeX
- SGML
- VRML
- XML
- YAML
-
- BSD
- GNU Hurd
- Linux
# Java
[['HTML', 'LaTeX', 'SGML', 'VRML', 'XML', 'YAML'], ['BSD', 'GNU Hurd', 'Linux']]
  • list嵌套map
# YAML
- name: PyYAML
status: 4
license: MIT
language: Python
- name: PySyck
status: 5
license: BSD
language: Python
# Java
[{'status': 4, 'language': 'Python', 'name': 'PyYAML', 'license': 'MIT'},
{'status': 5, 'license': 'BSD', 'name': 'PySyck', 'language': 'Python'}]