Skip to content

配置文件格式总结:.properties vs .yml


一、.properties 文件

1. 基本特性

编码:默认 ISO-8859-1,不支持直接写入中文(需转义或修改编码)。 • 语法:简单键值对格式:

properties
key=value
user.name=张三

中文支持: • 方案 1:使用 Unicode 转义(如 \u5F20\u4E09)。 • 方案 2:保存为 UTF-8 编码,并在代码中指定 UTF-8 读取。 • 方案 3:改用 XML 格式的 Properties 文件(原生支持 UTF-8)。

2. 优缺点

优点: • 简单轻量,适合小型配置。 • Java 原生支持,无需额外依赖。 • 缺点: • 不支持复杂数据结构(如嵌套、列表)。 • 中文需转义或显式处理编码,可读性差。


二、.yml 文件(YAML 格式)

1. 基本特性

编码:默认 UTF-8,直接支持中文,无需转义。 • 语法:结构化层级格式,使用缩进和符号(如 :-):

yaml
user:
  name: 张三
  age: 30
  hobbies:
    - 读书
    - 编程

数据类型:支持字符串、数字、布尔值、列表、对象、多行文本等。

2. 中文支持

• 直接写入中文,无需额外处理:

yaml
message: 你好,世界!

3. 优缺点

优点: • 结构化数据,支持嵌套和复杂配置。 • 可读性高,适合大型项目和多环境配置。 • 天然支持 UTF-8,国际化友好。 • 缺点: • 依赖 YAML 解析库(如 SnakeYAML)。 • 缩进敏感,格式错误易导致解析失败。


三、核心区别对比

特性.properties.yml
编码默认 ISO-8859-1,需处理中文默认 UTF-8,直接支持中文
数据结构扁平键值对,无嵌套或列表支持对象、列表、多级嵌套
可读性简单但冗长,中文需转义高,结构清晰,直接支持中文
注释# 注释# 注释
适用场景小型配置、Java 原生项目复杂配置、微服务、Spring Boot 项目
工具支持Java 内置需第三方库(如 SnakeYAML)

四、如何选择?

  1. .properties: • 适合简单键值配置、无需嵌套的场景。 • 需兼容旧项目或依赖 Java 原生解析。 • 中文使用频率低,或接受 Unicode 转义。

  2. .yml: • 需要结构化配置(如环境变量、多 profiles)。 • 项目复杂,需支持列表、嵌套对象等。 • 直接使用中文,追求高可读性。


五、示例对比

场景:配置用户信息

properties
# properties(需转义中文)
user.name=\u5F20\u4E09
user.age=30
user.hobbies=读书,编程
yaml
# yml(直接支持中文)
user:
  name: 张三
  age: 30
  hobbies:
    - 读书
    - 编程

总结

中文支持:优先选 yml(无转义),若用 properties 需处理编码。 • 复杂度:简单配置用 properties,复杂配置用 yml。 • 团队习惯:Spring Boot 生态倾向于 yml,传统 Java 项目可能沿用 properties

✨ 网站运行时间: 3年11月15天 ❤️ 道阻且长,行则将至 - 微信号: heikedreamer