SpringBoot多環境配置

xiezhr發表於2024-04-01

寫在前面

在實際專案的開發過程中,我們程式往往需要在不同環境中執行。例如:開發環境、測試環境和生產環境。

每個環境中的配置引數可能都會有所不同,例如資料庫連線資訊、檔案伺服器等等。

Spring Boot 提供了非常方便的方式來管理這些不同環境的配置。

一、Spring Profile 介紹

Spring ProfileSpring 框架用於處理不同環境配置的解決方案。

Profile 可以幫助我們在不改變應用程式碼的情況下,根據當前環境動態地啟用或者切換不同的配置。

Spring Boot 為每個 Profile 提供了一個獨立的 application.properties(或 application.yml)配置檔案。

預設情況下,Spring Boot 使用的是 application.properties 檔案。

當你啟用一個特定的 Profile 時,Spring Boot 會查詢名為 application-{profile}.properties 的檔案,並把其中的屬性載入到 Spring Environment 中。

二、Properties與YAML

Spring Boot支援使用PropertiesYAML兩種配置方式。

兩者功能類似,都能完成Spring Boot的配置,但是Properties的優先順序要高於YMAL

2.1 Properties

  • Spring Boot 預設的配置檔案格式

  • 以“.”為分割的key=value鍵值對,例如,指定埠為8080 配置如下

    server.port=8080
    
  • 不支援複雜的資料結構,只支援字串型別的鍵值對。因此,它的使用適用於簡單的配置場景

2.2YAML

  • 採用樹狀結構,一目瞭然

    server:
     port: 8080
    
  • 在key後的冒號一定要跟一個空格,如“port: 8080”

  • YAML 格式檔案不支援註解@PropertySource匯入配置

  • 支援複雜的資料結構,如列表和鍵值對,因此,YAML 的使用適用於需要表示複雜資料結構的場合

2.3 如何選擇

Spring Boot 應用中,你可以根據自己的實際需求,選擇使用 YAML 還是 Properties 格式的配置檔案。

如果你的配置比較簡單,Properties 格式可能會更好些。

如果你的配置比較複雜,或者你希望配置檔案更具可讀性,那麼 YAML 格式可能是更好的選擇

三、建立配置檔案

3.1 建立配置檔案

在實際專案開發中,我們一般有三個環境:開發(dev)、測試(test)、生產(prod)。我們需要建立如下幾個配置檔案

  • application.yml 或者application.properties 用於存放所有環境通用的配置
  • application-dev.yml或者application-dev.properties 存放開發環境的特殊配置
  • application-test.yml或者application-test.properties 存放測試環境的特殊配置
  • application-prod.yml或者application-prod.properties 存放生產環境的特殊配置

配置檔案

3.2 配置檔案內容

①配置開發環境

application-dev.yml

server:
 port: 8080
 tomcat:
  uri-encoding: UTF-8
environment:
 name: 開發環境

application-dev.properties

server.port=8080
server.tomcat.uri-encoding=UTF-8
environment.name=開發環境

②配置生產環境

application-prod.yml

server:
 port: 8090
 tomcat:
  uri-encoding: UTF-8
environment:
 name: 生產環境

application-prod.properties

server.port=8090
server.tomcat.uri-encoding=UTF-8
environment.name=生產環境

application-test.ymlapplication-test.properties 配置檔案類似,由於篇幅原因,這裡就不一一例舉了

四、啟用 Profile

在上一小節中,我們建立了三個配置檔案即配置了三種環境,那麼我們怎麼才能啟用對應環境呢

4.1 配置檔案啟用

其實很多簡單,我們只需要在application.yml 或者application.properties 新增如下配置即可,即可啟用開發環境

application.yml

# application.yml
spring
 profiles:
  active: dev

application.properties

spring.profiles.active=dev

4.2 啟動引數啟用

在命令列中設定 spring.profiles.active 系統屬性。

例如,你可以使用以下命令來啟動你的應用,並啟用 "prod" 環境:

# 企業級專案開發中,針對生產環境,一般透過啟動命令再指定啟用生產 環境
java -jar $APP_NAME --spring.profiles.active=prod

4.3 環境變數啟用

我們還可以透過配置伺服器系統環境變數來啟用環境,在環境變數中設定SPRING_PROFILES_ACTIVE 即可,不過這種方式不常用,瞭解即可

五、測試是否生效

上一小節中,我們透過配置啟用了開發環境,我們就來實際驗證以下是否生效。

出現下圖紅框表示部分,說明我們啟用了dev 開發環境

image-20240329232015193

本期內容就到這了,希望對你有所幫助,我們下期再見 (●'◡'●)

相關文章