Spring Boot properties 与 YAML 互转,自动处理嵌套与数组。

切换工具
Properties0 字符 · 0 行
YAML0 字符 · 0 行

使用说明

用途

Spring Boot 配置文件 application.properties 与 application.yml 互转工具,把 a.b.c=value 这种点号扁平结构转换为 YAML 的嵌套结构,或反向。完整保留注释(# 单行)、字符串值的引号、数组(list[0]=x 转 list: [...])、复杂嵌套对象。常用于 Spring Boot / Quarkus / Micronaut 项目从 properties 迁移到 yml、阅读复杂配置时切换视图、配置 Code Review 等场景。所有转换在浏览器本地完成。

操作步骤

  1. 左侧粘贴 application.properties 或 application.yml
  2. 工具自动检测格式(看是 a.b=x 还是 a:\n b: x)
  3. 右侧实时输出另一种格式
  4. properties → yml:a.b.c=val 转为嵌套结构 a → b → c: val
  5. yml → properties:嵌套结构展开为点号路径
  6. 数组:myList[0]=a / myList[1]=b 转为 myList: [a, b]
  7. 注释:properties 的 # 注释保留为 yml 注释
  8. 引号处理:properties 的转义字符(\n \t)正确还原

常见问题

Spring Boot properties 还是 yml 好?
**新项目推荐 yml**:嵌套层级清晰,多 profile 一个文件,避免重复前缀。**老项目可以保留 properties**(迁移成本不值得)。**yml 的坑**:缩进必须空格不能 tab,"yes" "no" 等会被解析为布尔(加引号)。**properties 的优势**:每行独立,diff 工具友好,新人易懂。两者性能没区别。
怎么处理多 profile(dev / prod)?
properties: application-dev.properties + application-prod.properties,按文件分。yml: 一个 application.yml 用 `---` 分多文档,每段指定 spring.profiles。**yml 多文档更清爽**,profile-specific 配置和默认配置在一起对比清楚。
配置里有冒号 :,yml 会不会解析错?
yml 的 key: value 中冒号是分隔符。**value 含冒号要加引号**(如 URL "http://example.com" 必须加双引号)。properties 没这问题(按等号分隔,等号后随便)。本工具转换时自动给含特殊字符的 value 加引号。
@PropertySource 注解读 .yml 文件读不到?
是的,**@PropertySource 默认只支持 .properties**,不支持 yml。**Spring 主配置文件 application.yml** 由特殊机制加载,但你写 @PropertySource("classpath:custom.yml") 不生效。**解决方案**:1) 用 .properties 文件;2) 自定义 PropertySourceFactory。或者干脆把所有配置合到 application.yml。
环境变量覆盖配置怎么对应?
Spring Boot 支持环境变量覆盖:properties 里 `spring.datasource.url=jdbc:...` 对应环境变量 `SPRING_DATASOURCE_URL`(点号转下划线 + 大写)。yml 同理。**Docker / Kubernetes 部署常用此机制**:configmap / 环境变量覆盖 application.yml 默认值。

应用场景

  • Spring Boot 项目从 properties 迁到 yml
  • 复杂配置阅读:嵌套深的 yml 转 properties 平铺看全
  • Code Review:properties 单行 diff 友好,yml 嵌套看结构清楚
  • 配置文档生成:自动化输出配置项清单
  • Kubernetes ConfigMap:把 application.yml 内容嵌入 ConfigMap 时格式转换

适用场景

Spring Boot / Quarkus / Micronaut 项目配置文件迁移、阅读、Code Review、自动文档生成、K8s ConfigMap。Java 后端、DevOps 常用。注释保留、数组转换、引号处理、嵌套展开是关键差异点。