配置文件格式总结:.properties vs .yml
一、.properties 文件
1. 基本特性
• 编码:默认 ISO-8859-1,不支持直接写入中文(需转义或修改编码)。 • 语法:简单键值对格式:
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,直接支持中文,无需转义。 • 语法:结构化层级格式,使用缩进和符号(如 :、-):
user:
name: 张三
age: 30
hobbies:
- 读书
- 编程• 数据类型:支持字符串、数字、布尔值、列表、对象、多行文本等。
2. 中文支持
• 直接写入中文,无需额外处理:
message: 你好,世界!3. 优缺点
• 优点: • 结构化数据,支持嵌套和复杂配置。 • 可读性高,适合大型项目和多环境配置。 • 天然支持 UTF-8,国际化友好。 • 缺点: • 依赖 YAML 解析库(如 SnakeYAML)。 • 缩进敏感,格式错误易导致解析失败。
三、核心区别对比
| 特性 | .properties | .yml |
|---|---|---|
| 编码 | 默认 ISO-8859-1,需处理中文 | 默认 UTF-8,直接支持中文 |
| 数据结构 | 扁平键值对,无嵌套或列表 | 支持对象、列表、多级嵌套 |
| 可读性 | 简单但冗长,中文需转义 | 高,结构清晰,直接支持中文 |
| 注释 | # 注释 | # 注释 |
| 适用场景 | 小型配置、Java 原生项目 | 复杂配置、微服务、Spring Boot 项目 |
| 工具支持 | Java 内置 | 需第三方库(如 SnakeYAML) |
四、如何选择?
.properties: • 适合简单键值配置、无需嵌套的场景。 • 需兼容旧项目或依赖 Java 原生解析。 • 中文使用频率低,或接受 Unicode 转义。.yml: • 需要结构化配置(如环境变量、多 profiles)。 • 项目复杂,需支持列表、嵌套对象等。 • 直接使用中文,追求高可读性。
五、示例对比
场景:配置用户信息
# properties(需转义中文)
user.name=\u5F20\u4E09
user.age=30
user.hobbies=读书,编程# yml(直接支持中文)
user:
name: 张三
age: 30
hobbies:
- 读书
- 编程总结
• 中文支持:优先选 yml(无转义),若用 properties 需处理编码。 • 复杂度:简单配置用 properties,复杂配置用 yml。 • 团队习惯:Spring Boot 生态倾向于 yml,传统 Java 项目可能沿用 properties。