这是 SpringBoot3 第六篇视频笔记,这里记录了Spring Boot中的配置文件格式


yml格式配置文件

基本语法

  • yml文件是以key: value形式书写,使用缩进表示层级关系
  • 缩进时不允许使用Tab键进行缩进,只能使用空格
  • 不论缩进多少空格,只要和相同层级的元素左对齐即可
  • yml文件中大小写敏感
  • 使用#注释

yml支持方式

  • 支持对象: 键值对的集合
  • 支持数组
  • 单独的属性,例如字符串,数字,布尔值,日期等

SpringBoot中配置yml格式的配置文件

@Component
@ConfigurationProperties(prefix = "person")
@Data
public class Person {
    private String name;
    private Integer age;
    private Date birthDay;
    private Boolean like;
    private Child child;
    private List<Dog> dogs;
    private Map<String, Cat> cats;
}

yml配置

application.yml
person:
  # 简单数据类型表示
  name: 皮皮
  age: 18
  birth-day: 2000/01/01 12:00:00
  like: true
  # 对象类型属性
  child:
    name: 灰灰
    age: 10
    birth-day: 2000/01/01 12:00:00
    # 数组类型表示
    text:
      - abc
      - cdf
  # 集合类型
  dogs:
    - name: 花花
      age: 2
    - name: 屡屡
      age: 3
  # map类型属性表示
  cats:
    # map可以使用键值对的形式表示
    c1:
      name: 小胖
      age: 4
    # 也可以使用对象的形式表示
    c2: {name: 小鬼, age: 5}

::: tip 提示 在yml文件中对于以下几种类型的说明

  • 文本
    • 单引号中的文本不会被转义
    • 但是双引号中的文本会被转义
  • 大文本类型
    • |开头大文本写在下一层,文本中的原本格式会被保留
    • >开头大文本写在下一层,文本中的原本格式会被忽略,全部写成一行
  • 多文档合并
    • 使用---可以将多个yml文档合并在一个文档中,但是每一个文档区域已让是内容独立的 :::

大文本演示

# 数组类型表示
text:
  - 'abc \n'
  - "def \n"
  - | 
    我是大文本
    我是小妖怪
    逍遥又自在
  - > 
    我是大文本
    我想要换行
    但是不让换
Person(..., text=[abc \n, def 
, 我是大文本
我是小妖怪
逍遥又自在
, 我是大文本 我想要换行 但是不让换
]), ...)})

文档合并演示

---
spring:
  servlet:
    multipart:
      enabled: false
      max-file-size: 10MB
---
server:
  port: 8899

properties格式配置文件

application.properties
# 对象属性值绑定
person.name=皮皮
person.age=18
person.birth-day=2000/01/01 12:00:00
person.like=true
# 复杂对象属性绑定
person.child.name=灰灰
person.child.age=10
person.child.birth-day=2000/01/01 12:00:00
# 数组
person.child.text[0]=abc
person.child.text[1]=cdf
# 对象集合
person.dogs[0].name=花花
person.dogs[0].age=2
person.dogs[1].name=屡屡
person.dogs[1].age=3
# map对象
person.cats.c1.name=小胖
person.cats.c1.age=4
person.cats.c2.name=小鬼
person.cats.c2.age=5

这里使用@Component注解将对象放到SpringBoot容器中进行管理,@ConfigurationProperties(prefix = "person")表示配置文件中以person开头的属性会绑定到Person对象中。 ::: tip 提示 对于日期类型的属性,应该使用yyyy/MM/dd HH:mm:ss的格式,目前测试使用yyyy-MM-dd的格式无法识别 :::