Spring Boot (九)——YAML属性配置文件使用详解

Spring Boot弱化配置的特性让属性配置文件的使用也更加便捷,它默认支持对application.properties或application.yml属性配置文件处理。那么这两者完全一样吗?肯定不是啦!本文就来和大伙重点介绍下yaml配置。

1、YAML是什么

YAML是JSON的一个超集,是一种方便的定义层次配置数据的格式,结构层次上清晰明了,配置简单易读、易用。要想使用YAML作为属性配置文件,需要将SnakeYAML库添加到classpath下,Spring Boot对SnakeYAML库也做了集成,例如使用spring-boot-starter-web或spring-boot-starter都会自动添加SnakeYAML库到classpath下。下面是一个简单的application.yml属性配置文件。

server:
  port: 8082
  servlet:
    context-path: /macay

2、基本用法

1、基本语法
  • 使用缩进表示层级关系
  • 缩进时不允许使用Tab键,只允许使用空格
  • 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
  • 大小写需敏感
2、值的写法

(1)、值是字面值
字面量直接用类似 k:v 这种键值对来表示,字面量包含数字、字符串、布尔值或者日期。对于字符串有下面的约束:

  • 如果有字符串,默认不用加上单引号或者双引号
  • “ ”:双引号不会转义字符串里面的特殊字符,特殊字符依然是本身的意思
  • ’ ': 单引号会转义字符串里面的特殊字符

(2)、值是对象(Map)

对象表示一组键值对,可以分行写,键值后面使用冒号,冒号后面加空格,如 :

user:
  username:macay
  password:123456

也可以在一行内写出所有键值对,需使用 {k:v},如:

user:{'username':macay,'password':123456}

(3)、值是数组

数组如果分行写,需要使用 -…,比如:

person:
  - Tom
  - Jery
  - Macay

数组如果行内写,则使用 […, …],比如:

person:[Tom,Jery,Macay]

(4)列表类型:
列表元素在进行属性值注入的时候可以使用List或Set存储。
Spring Boot还支持复杂类型的列表元素,例如如下属性值配置:

server:
  list:
    - name:app-1
      address:
        - 192.168.60.66
        - 192.168.60.67
    - name:app-2
      address:
        - 192.168.60.68
        - 192.168.60.69

3、基本使用

yaml文件也具备properties文件的用法,比如4个默认路径、自定义路径、自定义名字、多环境配置等,参考这篇文章:详解配置文件 application.properties

当然,当然yaml配置也不是万能的,例如,yaml配置目前不支持@PropertySource注解。但是基础的 @ConfigurationProperties注解还是支持的。

发布了61 篇原创文章 · 获赞 0 · 访问量 592

猜你喜欢

转载自blog.csdn.net/weixin_44075963/article/details/103797626