[toc]
Lecture03-SpringBoot-使用-YAML
一、概念
YAML(YAML Ain't Markup Language)是一种人类可读的数据序列化格式,常用于配置文件、数据交换和程序配置。它的设计目标是简洁、直观,并且容易被人类阅读和编写,同时也易于机器解析和生成。
YAML中“Y”最初代表“Yet” ,后来被重新定义为语言名称的一部分,不再具有独立的实际含义。
- 最初含义:Yet:YAML最初被定义为“Yet Another Markup Language”,在这个表述中,“Yet”表示“仍、还”,当时正值标记语言蓬勃发展的时期,像HTML、XML、SGML等,“Yet Another”组合起来带有一种诙谐调侃的意味,旨在表明YAML也是众多标记语言中的一种。在这种语境下,YAML被视为是一种新出现的标记语言,与其他已有的标记语言类似。
- 重新定义:无实际独立含义:随着YAML的发展,其设计目的逐渐明确为以数据为中心,而非传统的文档标记。因此,它被重新定义为“YAML Ain't Markup Language”,成为一种递归缩写。此时,“Y”不再单独代表某个具体单词,而是作为语言名称“YAML”的一部分,通过这种重新定义,强调了YAML以数据为核心的特性,与传统标记语言区分开来 。
二、主要特点
- 可读性强:使用缩进和空格来表示结构,避免使用复杂的标记符号。
- 语法简洁:采用键值对、列表和嵌套结构,无需使用大量括号或引号。
- 支持多种数据类型:包括字符串、数字、布尔值、列表、映射等。
- 注释支持:使用
#符号添加注释,提高配置文件的可读性。 - 与编程语言无关:可以被多种编程语言解析和生成。
三、基本语法
1、语法规则
不用背,因为我们只需要在 IDEA 提示的帮助下,能够正确编写和看懂即可
- 每一行只能使用空格进行缩进,但是我们在 IDEA 里敲的时候仍然还是使用 TAB 键即可,IDEA 会自动把 TAB 改成正确数量的空格
- 缩进相同的配置项属于同一个级别(同一个级别在底层对应同一个对象或数组)
- 键值对格式中:属性名和属性值之间使用冒号,冒号左边不能有空格,右边必须有一个空格
- 数组格式中:使用减号设定数组的每一个值
- 单行注释:使用
#符号,从#到行末的内容都会被忽略 - 多行注释:YAML 不直接支持多行注释,需每行前加
#
2、示例
# 这是一个YAML配置文件示例
# 键值对(映射)
server:
host: localhost
port: 8080
enabled: true
# 列表(数组)
libraries:
- spring-boot
- hibernate
- junit
# 嵌套结构
database:
type: mysql
credentials:
username: root
password: secret
options:
timeout: 3000
retries: 3
# 多行字符串
description: |
这是一个多行描述
可以包含换行和特殊字符
如: " ' @ # $ %
# 布尔值、空值和数字
isDebug: false
maxConnections: 100
nullValue: null
四、在Spring Boot中的应用:
Spring Boot推荐使用application.yml替代传统的application.properties,例如:
server:
port: 8080
spring:
datasource:
url: jdbc:mysql://localhost:3306/mydb
username: root
password: secret
jpa:
hibernate:
ddl-auto: update
YAML的简洁语法和强大表达能力使其成为现代应用配置的首选格式,尤其在微服务和DevOps领域得到广泛应用
五、SpringBoot对配置文件的要求
1、标准配置文件
①按环境区分的配置文件
- 需要指定环境时命名规则:
application-{profile}.properties/yaml - 不需要指定环境时:
application.properties/yaml- YAML文件扩展名:yaml和yml都可以
- 激活方式:通过
spring.profiles.active属性指定 - 示例:

需要使用具体哪一个环境时,就在主配置文件中激活即可,例如:

spring:
application:
name: module40-spring-boot-base
profiles:
active: pro
②测试专用配置
- 位置:
src/test/resources目录下的配置文件 - 优先级:高于主配置,仅在测试时生效
- 示例:
test-application.yaml - 意义:在执行单元测试时允许使用临时性配置,主体程序在服务器上部署运行时,这些测试中的临时配置不生效
2、特殊配置文件
Bootstrap 配置(优先级最高)
- 作用:用于加载早期配置(如 Config Server 地址、加密密钥等)
- 文件类型:
bootstrap.properties或bootstrap.yaml - 加载时机:先于
application.properties或application.yaml,由 Spring Cloud Context 控制