YAML格式文件

1. YAML:常见的数据存储与交换格式

在配置文件和数据交换领域,常见的格式还包括 Properties(.properties)、XML(.xml)、JSON(.json)等。它们的设计初衷、易用性和适用场景各有差异:

  • Properties

    • 主要用于 Java 应用的配置文件,以键值对形式存储,每行一个 key=value(或 key:value)。

    • 优点:简单直观;缺点:无法表示复杂数据结构。

  • XML(eXtensible Markup Language)

    • 基于标签的标记语言,支持嵌套结构和属性。

    • 优点:结构清晰、可扩展;缺点:冗余标签多,文件体积较大,解析性能相对较低。

  • JSON(JavaScript Object Notation)

    • 轻量级的数据交换格式,语法源自 JavaScript,支持数字、字符串、布尔值、数组、对象等类型。

    • 优点:简洁易读、解析高效;缺点:不支持注释,无法很好地表达多文档场景。

  • YAML(YAML Ain’t Markup Language,常见扩展名 .yml.yaml

    • 人类可读的数据序列化格式,以缩进表示层级,支持注释和多文档分隔。

    • 优点:格式直观、注释友好,既能表达简单键值对,也能描述复杂的列表和映射;缺点:对缩进敏感,初学者可能因缩进错误而出错。

选择哪种格式,需结合项目需求、团队习惯、数据复杂度和性能要求。


2. YAML 语法规则

  1. 数据类型

    • 标量:字符串、数字、布尔值(true/false)、null

    • 序列(Sequence):列表,用连字符 - 表示

    • 映射(Mapping):键值对,用冒号 : 分隔

  2. 键值分隔

    • 使用冒号加一个空格:

      name: Jack
      age: 30
    • 注意:不能省略冒号后的空格。

  3. 层级表示

    • 通过换行 + 空格缩进表示嵌套关系,禁止使用 Tab,推荐 2 或 4 个空格:

      myapp:
      name: mall
      count: 10
  4. 同级元素对齐

    server:
    host: localhost
    port: 8080
  5. 键的唯一性

    • 在同一个映射(map)中,键必须唯一,否则后出现的键会覆盖先前的值。

  6. 注释

    • 使用 # 添加注释,注释前后用空格分隔更清晰:

      # 这是一个注释
      debug: true  # 启用调试模式
  7. 区分大小写

    • YAML 对键和值均区分大小写。


3. 实用小技巧

  1. 字符串引号

    • 单引号 '…':完全按原样保存,不识别转义字符。

    • 双引号 "…":支持转义(如 \n 表示换行)。

  2. 保留换行

    • 使用管道符 | 保留多行文本的格式:

      description: |
      这是第一行
      这是第二行(保留换行)
  3. 折叠换行

    • 使用大于号 > 将内容折叠成一行空格分隔:

      summary: >
      这是一段很长的文字,
      但在解析时会被折叠为一行。
  4. 多文档分隔

    • 使用三短横 --- 分隔多个文档,便于在一个文件中维护多组配置:

      ---
      env: development
      debug: true
      ---
      env: production
      debug: false

4. 在 Spring Boot 中的应用

Spring Boot 同时支持 .properties.yml/.yaml 格式的配置文件:

  • 优先级 Spring Boot 默认会先解析 application.properties,如果同一目录下同时存在 application.propertiesapplication.yml,则以 .properties 为准。如需使用 YAML,请确保只保留 application.yml,或将 application.properties 重命名。

  • 示例:resources/config/application.yml

    myapp:
    username: jim
    email:   jim@123.com
    age:     40
    password: jim123
  • 注意事项

    1. 放在 resources/config 下时,需将同目录下的 application.properties 改名或删除,才能生效。

    2. 扩展名可选 .yml.yaml,但请保持团队统一。

    3. 对于敏感信息(如密码、Token),建议结合 Spring Boot 提供的加密方案或使用外部 Vault 进行管理。

  • 微信
  • 赶快加我聊天吧
  • QQ
  • 赶快加我聊天吧
  • weinxin
三桂

发表评论 取消回复 您未登录,登录后才能评论,前往登录