環(huán)境介紹
正常來講骆捧,一個軟件的開發(fā)上線的流程大部分都是分為三個環(huán)境权均,依次是開發(fā)顿膨、測試、上線叽赊。
- 開發(fā)環(huán)境(dev):開發(fā)環(huán)境是指的是咱們本地跑的環(huán)境恋沃。
- 測試環(huán)境(qa):一般是克隆一份生產(chǎn)環(huán)境的配置,qa即test必指。
- 生產(chǎn)環(huán)境(prod):正式提供對外服務(wù)的囊咏,即是真實環(huán)境。
關(guān)于三個環(huán)境的切換已然標(biāo)準(zhǔn)化了塔橡,這里只是一筆帶過一下梅割,因為下文中的配置文件會跟三個環(huán)境有關(guān)聯(lián)。相信所有人都不會對這三個環(huán)境陌生的葛家。
今天主要講講關(guān)于springboot如何通過多個properties實現(xiàn)數(shù)據(jù)庫環(huán)境部署時自動切換配置的兩種方式户辞,部署時切換方式和打包時Maven控制方式。首先介紹部署時切換的方式癞谒。
部署時切換
1.1 配置dev和qa環(huán)境數(shù)據(jù)底燎,以備測試。
1.2 新增properties文件
如上圖:在application.properties文件的同級目錄依次創(chuàng)建application-dev.properties弹砚,application-qa.properties双仍,application-pro.properties這三個配置文件,dev迅栅、qa和prod分別對應(yīng)上文"環(huán)境介紹"中的三個環(huán)境殊校。
1.3 配置各個properties文件
在application.properties中添加配置切換選項晴玖,例如切換到dev環(huán)境的配置為:spring.profiles.active=dev
依次在application-dev.properties读存,application-qa.properties,application-pro.properties配置相關(guān)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 本地環(huán)境
當(dāng)設(shè)置application.properties中spring.profiles.active=dev
時让簿,則此時啟動連接的是dev環(huán)境。
如上圖秀睛,此時運行得到的結(jié)果與配置文件一致尔当,是dev環(huán)境的數(shù)據(jù)。
1.5 部署測試環(huán)境
部署測試環(huán)境,部署時切換到qa環(huán)境椭迎。
java -jar zuche-0.0.1-SNAPSHOT.jar --spring.profiles.active=qa --server.port=2008
可以看到日志中顯示的內(nèi)容與預(yù)期一致锐帜,spring.profiles.active設(shè)置為qa, 端口設(shè)置為2008。
運行效果如下圖畜号,部署以后連接的qa環(huán)境缴阎。
vMaven控制打包時切換
2.1 設(shè)置項目對象模型pom.xml
2.1.1 添加profiles到pom.xml中,profiles節(jié)點是和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
表示的是可以用這樣的命令來觸發(fā)profile蛮拔,true
表示dev是默認(rèn)的profile, 這樣本地直接ide啟動項目的時候就是連接的dev環(huán)境。
2.1.2 添加filters節(jié)點痹升。
<filters>
<filter>src/main/resources/application-${env}.properties</filter>
</filters>
2.2 更新application.properties建炫。
spring.profiles.active=@env@
注意@env@中的env可以理解為一個變量,需要與2.1.2中設(shè)置的${env}對應(yīng)上。
2.3 添加Maven打包命令
clean package -P qa -D maven.test.skip=true
-D maven.test.skip=true
不執(zhí)行測試用例疼蛾,也不編譯測試用例類肛跌。
2.4 執(zhí)行Maven命令
查看jar包的application.properties文件的spring.profiles.active,看Maven命令是否生效据过。
如上圖惋砂,spring.profiles.active=qa
2.5 部署Tomcat
java -jar zuche-0.0.1-SNAPSHOT.jar --server.port=2008
Maven打包時已經(jīng)設(shè)置了qa環(huán)境,部署命令中不需要再指明qa環(huán)境绳锅。