Lecture03-SpringBoot-使用-YAML

文章目录

    [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. 可读性强:使用缩进和空格来表示结构,避免使用复杂的标记符号。
    2. 语法简洁:采用键值对、列表和嵌套结构,无需使用大量括号或引号。
    3. 支持多种数据类型:包括字符串、数字、布尔值、列表、映射等。
    4. 注释支持:使用#符号添加注释,提高配置文件的可读性。
    5. 与编程语言无关:可以被多种编程语言解析和生成。

    三、基本语法

    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 属性指定
    • 示例:

    image-20250919102205599

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

    image-20250919102236095

    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 控制
    end