springboot之yaml

springboot之yaml


yaml简介

yaml是“yaml ain’t Markup Language”(yaml不是一种标记语言)的缩写。yaml使用空白、缩进、分行组织语言,从而使数据更加简洁易读。

spring boot配置除了默认的.properties文件,还可以使用.yaml文件,后缀名yml或者yaml都可以


基本语法

  • yaml使用键值对表示属性值,k: v注意:冒号后有空格
  • 对大小写敏感
  • 使用缩进表示层级关系
  • 缩进只允许使用空格,不能用tab
  • 缩进的空格数不重要,只要相同层级的元素对齐即可
  • #表示注释
  • 字符串可以不使用引号,也可以使用。单引号和不使用引号效果一样,表示按原文输出,不考虑转义字符,双引号表示会进行转义
  • 不支持中文key,若非要使用,需要使用双引号+方括号括起来,例如"[中文]"

数据类型

  • 字面量:不可再分的值,如number、string、boolean、date、null,写法为:

    k: v
    
  • 数组:如array、list、queue等,写法为:

    #写法1
    k: [v1, v2, v3]
    
    #写法2
    k: 
      - v1
      - v2
      - v3
    
  • 对象:键值对的集合。如map、object等,写法为:

    #写法1
    k: {k1: v1, k2: v2, k3: v3}
    
    #写法2
    k:
      k1: v1
      k2: v2
      k3: v3
    

小练习

现有PersonPet类,如下,我们需要使用yaml给Person配置参数

@Data
@Component
@ConfigurationProperties(prefix = "person")// 该类的配置以person为前缀
public class Person {
    private String userName;
    private Boolean boss;
    private Date birth;
    private Integer age;
    private Pet pet;
    private String[] interest;
    private List<String> animal;
    private Map<String, Object> score;
    private Set<Double> salary;
}
@Data
public class Pet {
    private String name;
    private Double weight;
}

写完这两个类后,会发现再Person类里,idea会提示没有配置Configuration Annotaion Processor,缺少这个东西,我们去写配置文件时就没有提示了。
在这里插入图片描述
此时我们需要去pom.xml中导入如下依赖,这样,我们再写配置文件时就会有提示了。

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-configuration-processor</artifactId>
</dependency>

同时,我们需要在打包时排除这个依赖,因为他和业务无关,只是为了开发方便,需要在打包插件中添加配置,如下:

<plugin>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-maven-plugin</artifactId>
  
  <configuration>
    <excludes>
      <!-- 打包时排除配置处理器,因为他只是为了写配置时有提示,与业务无关 -->
      <exclude>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-configuration-processor</artifactId>
      </exclude>
    </excludes>
  </configuration>
  
</plugin>

写完后,我们就可以开始写yaml配置了,如下:

person:
  user-name: 张三 # 写成userName也可
  boss: false
  birth: 2020/1/1 # 日期默认用/
  age: 11

  pet: {name: 旺财, weight: 18} # 或者如下
  #  pet:
  #    name: 旺财 # 冒号后有空格
  #    weight: 18

  #  interest: [看电影, 打游戏] #或者如下
  interest:
    - 看电影
    - 打游戏

  animal: [,]
  score: {"[语文]":100, math:99} #key不支持中文,需要用双引号和方括号括起来
  salary: [1000, 2000]

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值