java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > SpringBoot中properties和YAML区别

一文彻底搞懂Spring Boot中properties和YAML的区别

作者:今天过得怎么样

properties和yml都是Spring Boot支持的两种配置文件,其中yml格式的配置文件可以看做是对properties配置文件的升级,这篇文章主要介绍了Spring Boot中properties和YAML区别的相关资料,需要的朋友可以参考下

前言

在 Spring Boot 开发中,application.propertiesapplication.yml 是最常用的两种配置文件格式。随着项目复杂度提升,越来越多团队转向 YAML。那么,它们到底有何不同?今天我们就从定位、语法、数据表达能力、通用性四个角度,系统对比这两种配置方式。

一、定位不同:工具 vs 语言

properties 文件本质上是“属性文件”(Properties File),其设计初衷是在 Java 应用中以键值对的形式存储配置项。它简洁直接,长期以来作为 Spring Boot 默认的配置格式(尤其在 2.x 版本中)。

YAML(YAML Ain’t Markup Language,原意为 “Yet Another Markup Language”)则是一种通用的数据序列化格式,定位远不止于“配置属性”。它旨在以人类可读的方式表达结构化数据,适用于多种场景和语言。

一句话总结:properties 是一个配置工具,YAML 是一种表达结构化数据的语言。

二、语法风格:扁平 vs 层级

properties 语法

采用经典的 key=value 格式,每行一个配置项:

server.port=8080
debug=true
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/dbname?characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=root

YAML 语法

使用缩进和冒号表示层级关系,冒号后必须跟一个空格

server:
  port: 9090
debug: true
spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/dbname?characterEncoding=utf8
    username: root
    password: root
    driver-class-name: com.mysql.cj.jdbc.Driver

优势:YAML 层级清晰、结构直观,尤其在配置嵌套属性时,可读性和维护性显著优于 properties。

三、复杂数据类型支持:YAML 更强大

除了基本的字符串、数字、布尔值,YAML 原生支持对象、列表、Map 等复杂结构,无需额外解析逻辑。

示例:配置对象

user:
  id: 1
  name: Tom
  age: 20

示例:配置列表

# 列表写法一(推荐)
animals:
  - Dog
  - Cat
  - Bird
# 列表写法二(行内)
animals: [Dog, Cat, Bird]

相比之下,properties 虽可通过 list[0]=Dog 等方式模拟集合,但语法繁琐且易出错,远不如 YAML 自然。

对比:properties 模拟列表(不直观)

animals[0]=Dog 
animals[1]=Cat 
animals[2]=Bird

四、YAML 具备跨语言通用性

properties 是 Java 生态特有的配置格式,几乎仅用于 JVM 项目。
YAML 是一种语言无关的数据格式,被广泛应用于 Python、JavaScript、Go、Ruby、PHP 等多种编程语言中。

这意味着:在多语言微服务架构中,若使用统一的配置中心(如 Nacos、Apollo),各团队可共享同一份 YAML 配置文件,极大提升协作效率与运维一致性。

总结

维度propertiesYAML
定位Java 属性配置通用数据序列化语言
语法key=value,扁平结构key: value,支持嵌套与缩进
数据类型仅基础类型支持对象、列表、Map 等复杂结构
通用性仅限 Java/Spring多语言通用

适用场景

场景推荐格式
简单配置(< 10 个键).properties
复杂层次配置(数据库、多数据源、安全等).yml
需要多文档块(单文件多 profile).yml
团队中对 YAML 不熟悉.properties
需要编程生成配置文件(如脚本输出).properties 更容易拼接

虽然 Spring Boot 同时支持两种格式,但从可读性、表达力和生态兼容性来看,YAML 显然是更现代、更优雅的选择。如果你的新项目尚未选定配置格式,不妨大胆拥抱 YAML!

💡 小贴士:Spring Boot 会优先加载 application.yml(如果存在),若两者共存,YAML 配置将覆盖 properties 中的同名项。

到此这篇关于Spring Boot中properties和YAML区别的文章就介绍到这了,更多相关SpringBoot中properties和YAML区别内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文