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

 更新时间:2026年04月09日 10:15:52   作者:今天过得怎么样  
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区别内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 在Android系统中解析XML文件的方法

    在Android系统中解析XML文件的方法

    这篇文章主要介绍了在Android系统中解析XML文件的方法,利用Java写成的XmlPullParser解析器,需要的朋友可以参考下
    2015-07-07
  • IDEA生成标准JavaBean的几种方法总结

    IDEA生成标准JavaBean的几种方法总结

    标准javaBean是定义一个类的标准结构,下面这篇文章主要给大家总结介绍了关于IDEA生成标准JavaBean的几种方法,文中通过图文以及代码介绍的非常详细,需要的朋友可以参考下
    2024-03-03
  • Java中ArrayList初始化的四种方法详解

    Java中ArrayList初始化的四种方法详解

    这篇文章主要介绍了Java中ArrayList初始化的四种方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-04-04
  • 使用java -Dloader.path=./lib -jar启动应用的完整实践指南

    使用java -Dloader.path=./lib -jar启动应用的完整实践指南

    java -Dloader.path="lib/" -jar XXXX.jar是一个用于启动Java 应用程序的命令,这篇文章主要介绍了使用java -Dloader.path=./lib -jar启动应用的完整实践指南,文中给出了详细代码示例,需要的朋友可以参考下
    2025-10-10
  • Java中StringBuilder常用构造方法解析

    Java中StringBuilder常用构造方法解析

    这篇文章主要介绍了Java中StringBuilder常用构造方法解析,StringBuilder是一个可标的字符串类,我们可以吧它看成是一个容器这里的可变指的是StringBuilder对象中的内容是可变的,需要的朋友可以参考下
    2024-01-01
  • SpringSecurit盐值加密的密码验证以及强密码验证过程

    SpringSecurit盐值加密的密码验证以及强密码验证过程

    在密码加密过程中,盐值的使用可以增强密码的安全性,如果忘记存储盐值,将无法验证密码,强密码应包含数字、字母和特殊字符,长度应在8到30位之间,以提高账户安全
    2023-03-03
  • Java实现直接插入排序和折半插入排序算法示例

    Java实现直接插入排序和折半插入排序算法示例

    这篇文章主要介绍了Java实现直接插入排序和折半插入排序算法示例,文中对算法的思想和时间复杂度都有简单的讲解,需要的朋友可以参考下
    2016-04-04
  • 在IDEA里gradle配置和使用的方法步骤

    在IDEA里gradle配置和使用的方法步骤

    这篇文章主要介绍了在IDEA里gradle配置和使用的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • Java文件目录下载并打包成ZIP压缩包

    Java文件目录下载并打包成ZIP压缩包

    这篇文章主要介绍了在Java中如何实现文件夹、文件目录的递归下载并打包成ZIP压缩包,文中的示例代码讲解详细,有需要的可以参考下
    2024-10-10
  • java Zookeeper简述

    java Zookeeper简述

    ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。下面通过本文给大家分享java 中 zookeeper简单使用,需要的朋友参考下吧
    2021-09-09

最新评论