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
也會是不錯的選擇。