1. 前言
一般来说,使用 IDEA 创建一个 Spring Boot 项目时,默认都会生成一个 application.properties
的配置文件。但有的朋友会更倾向于使用 application.yml
,那么问题来了,这两种格式到底有啥区别呢?
2. 对比
开始比较之前,我们先来看看各自的实例:
- .properties 格式
server.port=8081
spring.datasource.type=org.apache.tomcat.jdbc.pool.DataSource
spring.datasource.url=jdbc:mysql://aliyuncs.com:3306/database?useUnicode=true&zeroDateTimeBehavior=convertToNull&autoReconnect=true
spring.datasource.username=root
spring.datasource.password=******
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
- .yml 格式
server:
port: 8082
spring:
datasource:
name: test
url: jdbc:mysql://127.0.0.1:3306/database
username: root
password: ******
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.jdbc.Driver
从上面的实例我们可以发现,两者的区别主要有以下几点:
.properties
格式使用的是 键值对形式,而.yml
格式则使用的是 树状结构.properties
格式通过.
来连接,=
来赋值,结构上比较直接,而.yml
格式则使用:
来分层,结构上呈现树状结构,层次感明显,而且赋值时:
的后边必须 接着一个空格再赋值
此外,.yml
配置时需要注意以下几点:
- 缩进必须用空格,不能用 Tab
@PropertySource
注解不能加载yml
文件
最后还有一个 执行先后顺序 的区别:如果一个工程中同时存在两种格式的文件,那么会优先加载 .yml
文件,然后再加载 .properties
,而且后加载的 .properties
会覆盖之前加载的 .yml
文件。
3. 总结
总的来讲,.properties
格式的属性层级虽然存在冗余,但是更加直观、方便。而 .yml
格式虽然采用树状结构,属性层级冗余度大大降低,但当配置较多时,可读性会变差许多。而且如果考虑到要使用 @PropertySource
注解,.properties
会是更佳的选择。此外,为了适配更多的框架,还是更倾向于选择 .properties
格式。当然了,如果配置文件较少的情况下,使用 .yml
也会是不错的选择。