application.properties 和 application.yml 的区别

1. 基本概念

application.properties 和 application.yml 都是 Spring Boot 的配置文件,用于配置应用程序的各种参数(如服务器端口、数据库连接等)。

2. 语法区别

application.properties(键值对格式)

properties
# 平铺式结构,使用点号分隔
server.port=8080
server.servlet.context-path=/api

spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

# 数组配置
spring.redis.cluster.nodes[0]=127.0.0.1:7000
spring.redis.cluster.nodes[1]=127.0.0.1:7001

application.yml(YAML格式)

yaml
# 树形结构,使用缩进表示层级
server:
  port: 8080
  servlet:
    context-path: /api

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/test
    username: root
    password: 123456
    driver-class-name: com.mysql.cj.jdbc.Driver
  
  redis:
    cluster:
      nodes:   # 数组配置
        - 127.0.0.1:7000
        - 127.0.0.1:7001

3. 主要区别对比

 
特性application.propertiesapplication.yml
格式 键值对(key=value) YAML(树形结构)
可读性 配置多时代码冗余 结构清晰,可读性好
缩进 不需要 需要严格缩进(空格)
重复前缀 需要重复写前缀 不需要重复
学习曲线 简单直观 需要了解YAML语法
列表支持 使用[index]语法 使用破折号(-)

4. 配置示例对比

多环境配置

properties方式:

properties
# application-dev.properties
server.port=8081
spring.datasource.url=jdbc:mysql://localhost:3306/dev_db

# application-prod.properties
server.port=80
spring.datasource.url=jdbc:mysql://192.168.1.100:3306/prod_db

yml方式:

yaml
# application.yml
spring:
  profiles:
    active: dev
---
spring:
  profiles: dev
server:
  port: 8081
  datasource:
    url: jdbc:mysql://localhost:3306/dev_db
---
spring:
  profiles: prod
server:
  port: 80
  datasource:
    url: jdbc:mysql://192.168.1.100:3306/prod_db

5. 优缺点

application.properties

优点:

  • 语法简单,无需学习新格式

  • 单一键值对,不易出错

  • IDE支持好,自动提示完善

缺点:

  • 配置多时代码重复

  • 层级关系不明显

  • 长配置不易阅读

application.yml

优点:

  • 结构清晰,可读性好

  • 避免重复配置前缀

  • 支持多环境配置在同一文件

  • 支持更多数据类型

缺点:

  • 对缩进要求严格

  • 不小心容易格式错误

  • 复杂配置时调试较困难

6. 使用建议

  • 小型项目:两者都可以,根据个人喜好

  • 大型项目:推荐使用 yml,配置更清晰

  • 团队协作:统一使用一种格式

  • Spring Boot 版本:两者完全兼容,可混合使用(properties优先级高于yml)

7. 注意事项

yaml
# yml中需要注意:
# 1. 冒号后面必须有空格
server:port=8080  # 错误
server: port=8080  # 正确

# 2. 缩进必须一致(使用空格,不能用Tab)
server:
    port: 8080  # 正确(2或4个空格)
  port: 8080    # 错误(缩进不一致)

# 3. 字符串可以不写引号
name: zhangsan
name: "zhangsan"  # 也可以

总结:两者功能完全相同,只是语法格式不同。可以根据团队习惯和项目需求选择合适的格式。

posted @ 2026-03-07 13:39  软件拓荒人  阅读(5)  评论(0)    收藏  举报