之前講過Spring Boot 的系統配置和自定義配置,實現了按照實際項目的要求配置系統的相關熟悉。但是,在實際項目開發過程中,需要面對不同的環境,例如:開發環境,測試環境,生產環境。各個環境的數據庫、Redis服務器等配置有可能不同,這就需要頻繁的手動修改相關系統配置。這種方式特別麻煩,費時費力,而且出錯的概率還極大。慶幸的是,Spring Boot 為我們提供了更加簡單方便的配置方案來解決多環境的配置問題,下面就來聊一聊Spring Boot 系統配置之多環境配置實現。
一、增加配置文件
首先,在resource 目錄下,分別創建 application-dev.properties、application-test.properties 和 application-production.properties 三個配置文件對應:開發環境、測試環境 和 生產環境。如下圖所示:
根據開發、測試、生產等三個常見的環境分成了三個配置文件,分別配置上面三個環境的各自的配置項。
說明:
application.properties 為項目主配置文件,包含項目所需的所有公共配置。
application-dev.properties 為開發環境配置文件,配置開發環境所需的單獨配置。
application-test.properties 為測試環境配置文件。
application-production.properties 為生產環境配置文件。
二、各環境相關配置
1、修改各個環境的配置文件
這里以不同環境的數據庫配置不同為例,配置數據庫的不同連接,配置信息如下:
# 數據庫連接 spring.datasource.url=jdbc:mysql://localhost:3306/zwz_test spring.datasource.username=root spring.datasource.password=root spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
上面這個配置是開發環境 application-dev.properties 配置文件。其他的配置文件修改對應的配置連接即可,這里這里不重復了。
2、修改 application.properties 主配置文件
application.properties 為項目主配置文件,包含項目所需的所有公共配置,其他配置存放在application-dev.properties 等配置文件中。
# 服務器端口配置 server.port=8088 # 數據源相關配置,這里用的是阿里的druid 數據源 spring.datasource.druid.initial-size=1 spring.datasource.druid.min-idle=1 spring.datasource.druid.max-active=20 spring.datasource.druid.test-on-borrow=true spring.datasource.druid.stat-view-servlet.allow=true # mybatis 相關配置 mybatis.type-aliases-package=com.weiz.pojo mybatis.mapper-locations=classpath:mapper/*.xml
mapper.mappers=com.weiz.utils.MyMapper mapper.not-empty=false mapper.identity=MYSQL # 分頁框架 pagehelper.helperDialect=mysql pagehelper.reasonable=true pagehelper.supportMethodsArguments=true pagehelper.params=count=countSql
# 開發環境 spring.profiles.active=dev # 測試環境 # spring.profiles.active=test # 生產環境 # spring.profiles.active=production
3、在 application.properties 激活不同環境的配置文件
在application.properties 配置文件中,增加如下配置,指定對應的環境目錄。
# 開發環境 spring.profiles.active=dev # 測試環境 # spring.profiles.active=test # 生產環境 # spring.profiles.active=production
文件中的 spring.profiles.active 即為 指定當前的項目的環境。
選擇使用對應的環境配置,只需要在application.properties 中加上 spring.profiles.active=test ,指定配置文件的后綴,就可以使用對應環境的配置。
三、啟動測試
啟動項目,在啟動的時候,在系統啟動日志中,可以看到加載的是哪個環境的配置文件。
從上面的啟動日志,可以看到系統目前啟動的是dev 開發環境。調用相關的接口,也可以查到系統最終連接的是哪個數據庫。
四、啟動項目指定環境
1、運行啟動項目指定環境
在項目開發過程中,通過修改配置文件就能非常輕松的切換項目環境,但是打包部署時,能否指定對應的環境呢?答案是肯定的,下面我們來看看怎么快捷打包部署不同的環境:
java -jar myapp.jar --spring.profiles.active=dev
我們平時啟動打包的jar包時,可能使用的是 java -jar myjavaapp.jar來啟動項目,如果我們需要制定特定的環境啟動只需要加上一個啟動屬性即可輕松完成一個jar在不同環境通用的效果。
2、idea 運行項目指定環境
idea運行項目是,指定項目環境也特別簡單,idea配置VM參數即可。在VM選項中輸入-Dspring.profiles.active=dev,表示激活dev環境;然后重啟工程訪問即可。
最后
以上,就把Spring Boot 項目配置多環境介紹完了,實現起來比較簡單。。
這個系列課程的完整源碼,也會提供給大家。大家關注我的微信公眾號(架構師精進),回復:springboot源碼。獲取這個系列課程的完整源碼。