SpringBoot(三)通過properties實現多個數據庫環境自動切換配置
前面的文章已經介紹了CentOS部署SpringBoot項目從0到1的詳細過程,包括Linux安裝ftp、Tomcat以及Java jdk的全部過程。這篇文章主要介紹關於springboot如何通過多個properties實現數據庫環境部署時自動切換配置的兩種方式,部署時切換方式和打包時Maven控制方式。
關於springboot基礎礦建搭建有疑問的。可以看我之前的一篇文章。詳解intellij idea搭建SpringBoot
v環境介紹
正常來講,一個軟件的開發上線的流程大部分都是分為三個環境,依次是開發、測試、上線。
開發環境(dev):
開發環境是指的是咱們本地跑的環境。測試環境(qa):
生產環境(prod)
正式提供對外服務的,即是真實環境。關於三個環境的切換已然標準化了,這裏只是一筆帶過一下,因為下文中的配置文件會跟三個環境有關聯。相信所有人都不會對這三個環境陌生的。
今天主要講講關於springboot如何通過多個properties實現數據庫環境部署時自動切換配置的兩種方式,部署時切換方式和打包時Maven控制方式。首先介紹部署時切換的方式。
v部署時切換
1.1 配置dev和qa環境數據,以備測試。
1.2 新增properties文件
如上圖:在application.properties文件的同級目錄依次創建application-dev.properties,application-qa.properties,application-pro.properties這三個配置文件,dev、qa和prod分別對應上文"環境介紹"中的三個環境。
1.3 配置各個properties文件
在application.properties中添加配置切換選項,例如切換到dev環境的配置為:spring.profiles.active=dev
依次在application-dev.properties,application-qa.properties,application-pro.properties配置相關datasource連接信息。
例如application-dev.properties配置:
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/mytest spring.datasource.username=root spring.datasource.password=*********** spring.datasource.driver-class-name=com.mysql.jdbc.Driver
1.4 本地環境
當設置application.properties中spring.profiles.active=dev
時,則此時啟動連接的是dev環境。
如上圖,此時運行得到的結果與配置文件一致,是dev環境的數據。
1.5 部署測試環境
部署測試環境,關於部署有不了解的可以看看《CentOS部署SpringBoot項目從0到1》,部署時切換到qa環境。
java -jar zuche-0.0.1-SNAPSHOT.jar --spring.profiles.active=qa --server.port=2008
可以看到日誌中顯示的內容與預期一致,spring.profiles.active設置為qa, 端口設置為2008。
運行效果如下圖,部署以後連接的qa環境。
vMaven控制打包時切換
2.1 設置項目對象模型pom.xml
2.1.1 添加profiles到pom.xml中,profiles節點是和build同級的。
<profiles> <profile> <id>dev</id> <properties> <env>dev</env> </properties> <activation> <activeByDefault>true</activeByDefault> </activation> </profile> <profile> <id>qa</id> <properties> <env>qa</env> </properties> </profile> <profile> <id>prod</id> <properties> <env>prod</env> </properties> </profile> </profiles>
activation
表示的是可以用這樣的命令來觸發profile,true
表示dev是默認的profile, 這樣本地直接ide啟動項目的時候就是連接的dev環境。
2.1.2 添加filters節點。
<filters> <filter>src/main/resources/application-${env}.properties</filter> </filters>
SpringBoot(三)通過properties實現多個數據庫環境自動切換配置