yaml语法

yaml简介

Java本身为我们提供了properties格式配置文件的支持,我们在log4j等配置时也经常的使用。但是properties文件本身只支持key-value格式的存储,对于复杂需求比较难实现。因此在需求较为复杂的情况下,我们通常都是使用xml进行存储,但是xml语言解析起来比较麻烦,语法也比较的复杂,使用起来很不友好。为了解决以上问题,SpringBoot将yaml作为配置文件的首选。

YAML(/ˈjæməl/,尾音类似camel骆驼)是一个可读性高,用来表达数据序列化的格式。YAML的语法和其他高级语言类似,并且可以简单表达清单、散列表,标量等数据形态。它使用空白符号缩进和大量依赖外观的特色,特别适合用来表达或编辑数据结构、各种配置文件、倾印调试内容、文件大纲(例如:许多电子邮件标题格式和YAML非常接近)。尽管它比较适合用来表达层次结构式(hierarchical model)的数据结构,不过也有精致的语法可以表示关系性(relational model)的数据。

yaml基本的语法

  • 大小写敏感
  • 使用缩进表示层级关系
  • 缩进不允许使用tab,只允许空格
  • 缩进的空格数不重要,只要相同层级的元素左对齐即可
  • '#'表示注释
  • 在使用的时候不需要添加""或者'',但是如果有特殊需求也可以添加:
    • 添加"",如果文本中含有转义字符,且不希望进行转义,可以使用,如:"张\n"
    • 添加'',如果文本中含有转义字符,且希望其进行转义,可以使用

数据类型

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

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

使用yaml表示Java对象

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

也可以使用 key:{key1: value1, key2: value2, …}

student:
  name: lisi
  sex:age: 16

list(数组)表示方式

-开头的行表示构成一个数组:

lists:
  - 11
  - 12
  - 13

YAML 支持多维数组,可以使用行内表示:

lists: [1,2,3,4]

map表示方式

map: {name: zhangsn,sex: man}

使用占位符

username: root${random.int}
password: 8778218${spring.datasource.username}

可以使用随机数,也可以引用上文中的值

综合案例

student:
  name: 张万
  sex:age: 16
  lists:
    - 11
    - 12
    - 13
  map: {name: zhangsn,sex: man}
people: {name: zhang,sex: man,lists: [1,2,3,4],map: {name: 123,sex: man}}

SpringBoot中使用yaml配置文件

@ConfigurationProperties(prefix = "student")

在需要引入yaml配置文件的类上方添加上述注解即可,prefix的值为yaml文件中配置的相应的对象。

@Component
@ConfigurationProperties(prefix = "student")
public class Student {
    private String name;
    private String sex;
    private Integer age;
    private List<Integer> lists;
    private Map<String,Object> map;
}

要导入配置文件还可以使用@PropertySource("classpath:application.yaml")的形式。这种形式可以添加任意位置的配置文件

多环境配置

在实际开发过程中,我们可能会在多个环境下进行开发,因此我们需要进行多环境配置,yaml对多环境配置有良好的支持。

spring:
  profiles:
    active: dev
---
server:
  port: 8081
spring:
  profiles: dev
---
server:
  port: 8082
spring:
  profiles: test

使用---来进行分割多个配置环境。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

索半斤_suobanjin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值