在Spring Boot應用程序中,application.propertiesapplication.yml是配置文件的兩種常用格式。這兩個文件主要用於定義和管理應用的各種配置項,如數據庫連接、日誌設置、服務器端口、Spring Boot的自動配置選項等。雖然這兩個文件的功能是相同的,但它們的格式和寫法有所不同。任何使用SpringBoot做為開發框架的開發人員,都需要熟悉瞭解兩種配置文件的格式和使用方法。

一、application.properties簡介

application.properties是Spring Boot中最常用的配置文件格式之一。它遵循鍵值對的方式定義配置項,每個配置項都由鍵(key)和值(value)組成。其格式簡潔、直觀,非常適合用來定義簡單的配置項。

1.1 配置文件基本格式

application.properties文件中,每一行都代表一個配置項,格式為:

key=value

例如,配置數據庫連接:

spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=root
1.2 常見配置項
  • 服務器配置
server.port=8080
server.servlet.context-path=/myapp
  • 數據源配置
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=password
  • 日誌配置
logging.level.org.springframework=INFO
logging.level.com.example=DEBUG
logging.file.name=app.log
1.3 特點
  • 簡單直接,適合快速配置。
  • 容易理解和使用,特別適合小型項目和初學者。
  • 適合進行簡單的屬性配置,對於複雜結構的配置可能不太直觀。

二、application.yml簡介

application.yml(YAML格式)是Spring Boot支持的另一種配置方式。與properties文件不同,yml文件具有層級結構,使用縮進來表示配置項的層級關係。YAML語法更加靈活,適用於配置較複雜的應用場景。

2.1 配置文件基本格式

application.yml文件中,配置項的格式遵循YAML的規則,層級通過縮進表示(通常是2個空格)。

spring:
datasource:
url: jdbc:mysql://localhost:3306/mydb
username: root
password: password
2.2 常見配置項
  • 服務器配置
server:
port: 8080
servlet:
context-path: /myapp
  • 數據源配置
spring:
datasource:
url: jdbc:mysql://localhost:3306/mydb
username: root
password: password
  • 日誌配置
logging:
level:
org.springframework: INFO
com.example: DEBUG
file:
name: app.log
2.3 特點
  • 配置項結構清晰、層級分明,適合管理複雜的配置。
  • 支持更復雜的數據結構(如數組、對象等)。
  • 在多個配置項間層級關係非常清晰,尤其對於大型項目或微服務系統來説,更加便於維護。

三、application.propertiesapplication.yml的區別

儘管這兩個配置文件的功能相同,它們有一些關鍵的區別:

特點

application.properties

application.yml

語法

鍵值對形式,每個配置項在一行

層級結構,通過縮進表示層級關係

可讀性

對於簡單的配置項較為直觀

對於複雜結構更為清晰,層次分明

適用場景

配置簡單的應用

配置複雜結構,如嵌套屬性、數組等

格式靈活性

不支持多層嵌套結構

支持多層嵌套、數組等結構

文件長度

配置較長時會顯得雜亂

配置較長時層級分明,更易維護

四、如何在Spring Boot中使用application.propertiesapplication.yml

4.1 切換配置文件格式

Spring Boot默認會查找application.properties作為配置文件,但你也可以選擇使用application.yml。只需將文件名修改為application.yml,Spring Boot會自動識別並加載。

如果項目中同時存在這兩個文件,Spring Boot會優先加載application.properties。如果你想優先加載application.yml,可以在application.properties中使用如下配置:

spring.config.location=classpath:/application.yml
4.2 配置文件的優先級

Spring Boot會按照以下優先級加載配置文件,前面的文件會覆蓋後面的文件配置:

  1. 命令行參數(最高優先級)
  2. application.properties / application.yml(默認配置文件)
  3. 外部配置文件(通過--spring.config.location指定)
  4. 默認配置
4.3 多環境配置

Spring Boot支持為不同的環境使用不同的配置文件。你可以創建多個application-{profile}.propertiesapplication-{profile}.yml文件,並通過spring.profiles.active指定當前激活的環境配置。

例如:

# application-dev.properties
spring.datasource.url=jdbc:mysql://localhost:3306/dev_db
# application-prod.properties
spring.datasource.url=jdbc:mysql://localhost:3306/prod_db

application.properties中指定激活的環境:

spring.profiles.active=dev

這樣,Spring Boot會根據spring.profiles.active的值加載對應的配置文件。

properties和yml的優缺點比較

  • application.properties適用於較為簡單的配置,特別是當配置項不多時,其簡潔性和易用性非常適合小型項目。
  • application.yml更適合用於複雜的配置,能夠清晰地組織層級關係,尤其在有大量嵌套數據結構或數組的場景下更為優雅。
    以下是application.propertiesapplication.yml的優缺點對比表格:

特性

application.properties

application.yml

優點

- 簡單直觀,適合小型項目

- 層級結構清晰,適合複雜配置

- 適合配置項較少的情況

- 支持嵌套對象和數組,配置管理靈活

- 學習曲線低,易於上手

- 易於維護,特別是配置項多時

- 適合快速開發和測試

- 配置文件更簡潔,不易出現冗長的單行配置

缺點

- 對複雜的結構配置支持不足

- 配置較長時,需要注意縮進的準確性

- 配置項較多時,容易顯得雜亂不清

- 比properties格式更難以理解,尤其對初學者

- 不支持層級結構,複雜配置較難管理

- 相比properties,格式更嚴格,需要保持一致的縮進

- 對層級和數組結構的表示較為困難

- 對小型項目而言,可能顯得稍微複雜和冗餘

五、寫在最後

無論是選擇application.properties還是application.yml,都取決於你的個人習慣和項目需求。對於簡單的配置,properties格式足夠;而對於複雜的配置,yml格式能夠提供更清晰的結構和層級。如果你的應用日後需要處理更復雜的配置項,application.yml可能是更好的選擇。兩者都能夠滿足Spring Boot的配置需求,只要你合理選擇並加以使用,便能提升開發效率和項目可維護性。