之前講過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源碼。擷取這個系列課程的完整源碼。
推薦閱讀:
SpringBoot從入門到精通(二十三)Mybatis系列之——實作Mybatis多資料源配置 SpringBoot從入門到精通(二十二)使用Swagger2優雅建構 RESTful API文檔 SpringBoot從入門到精通(二十一)如何優雅的設計 RESTful API 接口版本号,實作 API 版本控制! SpringBoot從入門到精通(二十)快速建構RESTful Web API 服務 SpringBoot從入門到精通(十九)使用注解實作動态Sql、參數傳遞 SpringBoot從入門到精通(十八)Mybatis系列之——使用注解的方式實作背景管理功能 SpringBoot從入門到精通(十七)MyBatis系列之——建立自定義mapper 實作多表關聯查詢! SpringBoot從小白到精通(十六)使用pagehelper實作分頁查詢功能 SpringBoot從小白到精通(十五)實作開發環境熱部署 SpringBoot從小白到精通(十四)使用JdbcTemplate操作資料庫,配置多資料源! SpringBoot從小白到精通(十三)如何實作事務儲存 SpringBoot從小白到精通(十二)logback日志配置 SpringBoot從小白到精通(十一)統一異常處理 SpringBoot從小白到精通(十)使用Interceptor攔截器,一學就會! SpringBoot從小白到精通(九)使用@Async實作異步執行任務 SpringBoot從小白到精通(八)熟悉@EnableScheduling,一秒搞定定時任務 SpringBoot從小白到精通(七)使用Redis實作高速緩存架構 SpringBoot從小白到精通(六)使用Mybatis實作增删改查【附詳細步驟】 SpringBoot從小白到精通(五)Thymeleaf的文法及常用标簽 SpringBoot從小白到精通(四)Thymeleaf頁面模闆引擎 SpringBoot從小白到精通(三)系統配置及自定義配置 SpringBoot從小白到精通(二)如何傳回統一的資料格式 SpringBoot從小白到精通(一)如何快速建立SpringBoot項目