Spring Boot 配置文件格式 .yml VS .properties

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

從上面的實例我們可以發現,兩者的區別主要有以下幾點:

  1. .properties 格式使用的是 鍵值對形式,而 .yml 格式則使用的是 樹狀結構
  2. .properties 格式通過 . 來連接,= 來賦值,結構上比較直接,而 .yml 格式則使用 : 來分層,結構上呈現樹狀結構,層次感明顯,而且賦值時 : 的後邊必須 接着一個空格再賦值

此外,.yml 配置時需要注意以下幾點:

  1. 縮進必須用空格,不能用 Tab
  2. @PropertySource 註解不能加載 yml 文件

最後還有一個 執行先後順序 的區別:如果一個工程中同時存在兩種格式的文件,那麼會優先加載 .yml 文件,然後再加載 .properties,而且後加載的 .properties 會覆蓋之前加載的 .yml 文件。

3. 總結

總的來講,.properties 格式的屬性層級雖然存在冗餘,但是更加直觀、方便。而 .yml 格式雖然採用樹狀結構,屬性層級冗餘度大大降低,但當配置較多時,可讀性會變差許多。而且如果考慮到要使用 @PropertySource 註解,.properties 會是更佳的選擇。此外,爲了適配更多的框架,還是更傾向於選擇 .properties 格式。當然了,如果配置文件較少的情況下,使用 .yml 也會是不錯的選擇。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章