Spring Boot中.properties和.yml 的配置文件区别是什么?

📅 2025-12-28 21:50:45 阅读时间: 5分钟

在 Spring Boot 中,application.propertiesapplication.yml 都是用来配置应用程序属性的配置文件,它们的功能是等价的,只是语法格式不同。以下是两者的主要区别:


1. 语法格式不同

  • application.properties
    使用键值对的形式(类似 Java 的 Properties 文件):

    properties 复制代码
    server.port=8080
    spring.datasource.url=jdbc:mysql://localhost:3306/mydb
  • application.yml
    使用 YAML(YAML Ain't Markup Language)格式,基于缩进表示层级结构:

    yaml 复制代码
    server:
      port: 8080
    spring:
      datasource:
        url: jdbc:mysql://localhost:3306/mydb

2. 可读性与维护性

  • YAML 更易读、更简洁:对于嵌套配置(如 Spring Boot 中常见的多层配置),YAML 通过缩进清晰地表达层级关系。
  • Properties 更传统、兼容性好:适用于习惯使用 .properties 格式的开发者或工具。

3. 书写复杂度

  • 对于简单配置,两者差别不大;
  • 对于复杂配置(例如列表、Map、多 profile 配置等),YAML 更加直观:
    yaml 复制代码
    myapp:
      users:
        - name: Alice
          role: admin
        - name: Bob
          role: user
    等价的 properties 写法会比较冗长:
    properties 复制代码
    myapp.users[0].name=Alice
    myapp.users[0].role=admin
    myapp.users[1].name=Bob
    myapp.users[1].role=user

4. 加载优先级

Spring Boot 默认按以下顺序查找配置文件(优先级从高到低):

  1. 当前目录下的 /config 子目录
  2. 当前目录
  3. classpath 下的 /config
  4. classpath 根目录

在同一位置下,如果同时存在 application.propertiesapplication.yml,Spring Boot 会优先加载 application.properties(因为内部处理顺序中 .properties.yml 之前)。但通常建议只使用其中一种,避免混淆。

⚠️ 注意:Spring Boot 2.4+ 版本对配置文件的加载行为有细微调整,推荐查阅官方文档以获取最新信息。


5. 特殊字符处理

  • YAML 对缩进和特殊字符(如冒号、引号)敏感,格式错误会导致解析失败;
  • Properties 对格式要求较低,但不支持复杂数据结构的自然表达。

总结建议

场景 推荐格式
配置项少、结构简单 application.properties
配置项多、有嵌套/列表结构 application.yml
团队已有规范 遵循团队约定
需要与旧系统兼容 application.properties

✅ 最佳实践:在一个项目中统一使用一种格式,不要混用。


如果你刚开始使用 Spring Boot,YAML 通常是更现代、更清晰的选择。