實戰!三分鐘搞定Spring Boot 多環境配置
本文轉載自微信公眾號「架構師精進」,作者章為忠。轉載本文請聯系架構師精進公眾號。
在實際項目開發的過程中,需要面對不同的運行環境,比如開發環境、測試環境、生產環境等,每個運行環境的數據庫、Redis服務器等配置都不相同,每次發布測試、更新生產都需要手動修改相關系統配置。這種方式特別麻煩,費時費力,而且出錯的概率極大。慶幸的是,Spring Boot為我們提供了更加簡單方便的配置方案來解決多環境的配置問題,下面就來演示Spring Boot系統如何實現多環境配置。
一、多環境的配置
通常應用系統可能在開發環境(dev)、測試環境(test)、生產環境(prod)中運行,那么如何做到多個運行環境配置靈活、快速切換呢?SpringBoot提供了極簡的解決方案,只需要簡單的配置,應用系統就能靈活切換運行環境配置。
1. 創建多環境配置文件
創建多環境配置文件時,需要遵循Spring Boot允許的命名約定來命名,格式為application-{profile}.properties,其中{profile}為對應的環境標識。在項目resources目錄下分別創建application-dev.properties、application-test.properties和application-prod.properties三個配置文件,對應開發環境、測試環境和生產環境,如下圖所示:
根據應用系統中常見的三個運行環境拆分成了多個不同的配置文件,分別獨立配置上面各運行環境的配置項。具體如下所示:
- application.properties為項目主配置文件,包含項目所需的所有公共配置。
- application-dev.properties為開發環境配置文件,包含項目所需的單獨配置。
- application-test.properties為測試環境配置文件。
- application-prod.properties為生產環境配置文件。
2. 修改配置文件
通常情況下,開發環境、測試環境和生產環境使用的數據庫是不一樣的,所以接下來以不同環境配置不同數據庫為例來演示多環境的配置。
首先,修改application.properties,配置系統的啟動端口:
# 服務器端口配置
server.port=8088
在上面的示例中,application.properties包含項目所需的所有公共配置,這里配置系統的啟動端口,所有環境的啟動端口都是8088。
然后,修改application-dev.properties開發環境的配置,增加數據庫的連接配置,代碼示例如下:
# 指定數據庫驅動
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
# 數據庫jdbc連接url地址
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/myapp_dev
# 數據庫賬號
spring.datasource.username=root
spring.datasource.password=root
配置數據庫連接的相關屬性,我們看到開發環境配置的數據庫是myapp_dev。
其他環境的配置文件修改對應的配置連接即可,以上項目的多環境配置就完成了。接下來演示切換項目運行環境。
二、多環境的切換
前面講了如何配置多環境,那么,在實際測試、運行過程中如何切換系統運行環境呢?這個也非常簡單,通過修改application.properties配置文件中的spring.profiles.active配置項來激活相應的運行環境。如果沒有指定任何profile的配置文件,Spring Boot默認會啟動application-default.properties(默認環境)。
指定項目的啟動環境有以下三種方式:
(1)配置文件指定項目啟動環境
Spring Boot支持通過spring.profiles.active配置項目啟動環境,在application.properties配置文件中增加如下配置項指定對應的環境目錄:
# 系統運行環境
spring.profiles.active=dev
在上面的示例中,通過在application.properties配置文件中設置spring.profiles.active的配置項來配置系統的運行環境。這里配置的是dev開發環境。
(2)IDEA編譯器指定項目啟動環境
一般在IDEA啟動時,直接在IDEA的Run/debug Configuration頁面配置項目啟動環境,如下圖所示。
項目調試運行時,IDEA編譯器可以通過VM options、Program arguments、Active profiles三個參數設置啟動方式。
(3)命令行啟動指定項目環境
在命令行通過java-jar命令啟動項目時,需要如下指定啟動環境:
java -jar xxx.jar --spring.profiles.active=dev
如上所示,程序打包之后,可以在命令行使用java –jar的方式啟動,并設置啟動參數spring.profiles.active=dev,以開發環境為默認配置。在application-{profile}.properties中配置完成后,啟動項目時,在系統啟動日志中可以看到加載的是哪個環境的配置文件,如下圖所示:
在上面的啟動日志中可以看到系統目前啟動的是dev開發環境。如果實現相關的數據庫測試方法,可以驗證相應的數據庫操作是否生效。
最后
以上,我們就把Spring Boot 多環境配置介紹完了。Spring Boot 多環境配置是非常基礎,非常重要的功能,也是Spring Cloud 配置中心的基本配置。