所有分类
  • 所有分类
  • 未分类

yml/yaml–配置文件的用法

简介

说明

YAML 是一种简洁的非标记语言,文件名后缀为.yml,java中经常用它描述配置文件。

YAML以数据为中心,比json/xml等更适合做配置文件。

使用空格进行缩进,分行组织数据,从而使得表示更加简洁易读。

基本规则

  • 大小写敏感。
  • 使用缩进表示层级关系。只能使用空格进行缩进,禁止使用tab缩进。
    • 在SpringBoot中,使用两个空格进行缩进。
  • 使用#表示注释。
  • 字符串可以不用引号标注。
  • 缩进长度没有限制,只要元素对齐就表示这些元素属于一个层级。

数据类型

YAML 支持以下几种数据类型:

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

格式

纯量

简介

纯量是最基本的,不可再分的值,包括:

  • 字符串
  • 布尔值
  • 整数
  • 浮点数
  • Null
  • 时间
  • 日期

示例

key1: true

字符串

字符串可不用加单引号或双引号

str: 这是一行字符串
# 转为json之后:{ "str": "这是一行字符串" }

可使用双引号或者单引号包裹

多行字符串

# 字符串可以拆成多行,换行符会被转化成一个空格
str: 这是一段
  多行
  字符串
# 转换为 JSON 格式 { "str": "这是一段 多行 字符串" }
# 可使用|保留换行符,也可使用>折叠换行
this: |
  Foo
  Bar
that: >
  Foo
  Bar
# 转换后:{ this: 'Foo\nBar\n', that: 'Foo Bar\n' }

单引号和双引号的区别:单引号会对特殊字符转义,双引号不会对特殊字符转义

str1: '这是\n字符串'
str2: "这是\n字符串"

转换后的结果 

{'str1': '这是\\n字符串', 'str2': '这是\n字符串'}

布尔值

TRUE  #true,True都可以
FALSE  #false,False都可以

整数型

1234

浮点型

3.14
6.8523015e+5  #可以使用科学计数法 

对象

对象键值对:使用冒号结构表示:key: value,冒号后面要加一个空格。

层级关系有如下两种表示方式

写法1:

key:
  key1: value1
  key2: value2

写法2:

key: {key1: value1, key2: value2, ...}

数组

数组/List/Set(用-值表示数组中的一个元素)

:法1

pets:
  - cat
  - dog
  - pig

法2

pets: [cat,dog,pig]

YML支持多维数组

法1:在该项下面缩进一个空格。

-
 - A
 - B
 - C

结果:[[“A”, “B”, “C”]] 

法2:行内表示:

key: [value1, value2, ...]

引用(yml原生支持)

说明

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

  • &:用来建立锚点(defaults_tag),锚点标记后面数据为引用数据
  • <<:表示合并到当前数据,
  • * :用来引用锚点。

示例 

name: &a yaml
book: *a
books: 
  - java
  - *a
  - python

# 相当于
name: yaml
book: yaml
books: 
  - java
  - yaml
  - python

引用(application.yml)

SpringBoot的application.yml或者application.properties使用${}进行引用,例如:

spring:
  application:
    name: order

dubbo:
  application:
    name: ${spring.application.name}   #服务名称

高级

分段

多个文档在一个yml文件,使用 — 分隔方式来分段。

​spring:
  profiles:
  #激活开发环境
    active: dev
---
#开发环境配置
spring:
  profiles: dev
server:
  port: 8080
---
#生产环境配置
spring:
  profiles: prod
server:
  port: 8082
0

评论0

请先

显示验证码
没有账号?注册  忘记密码?

社交账号快速登录