SpringBoot入門教程(三)通過properties實現多個數據庫環境自動切換配置


前面的文章已經介紹了CentOS部署SpringBoot項目從0到1的詳細過程,包括Linux安裝ftp、Tomcat以及Java jdk的全部過程。這篇文章主要介紹關於springboot如何通過多個properties實現數據庫環境部署時自動切換配置的兩種方式,部署時切換方式和打包時Maven控制方式。

關於springboot基礎礦建搭建有疑問的。可以看我之前的一篇文章。詳解intellij idea搭建SpringBoot

v環境介紹

正常來講,一個軟件的開發上線的流程大部分都是分為三個環境,依次是開發、測試、上線。

開發環境(dev):

開發環境是指的是咱們本地跑的環境。

測試環境(qa):

一般是克隆一份生產環境的配置,qa即test。

生產環境(prod)

正式提供對外服務的,即是真實環境。

關於三個環境的切換已然標准化了,這里只是一筆帶過一下,因為下文中的配置文件會跟三個環境有關聯。相信所有人都不會對這三個環境陌生的。

今天主要講講關於springboot如何通過多個properties實現數據庫環境部署時自動切換配置的兩種方式,部署時切換方式和打包時Maven控制方式。首先介紹部署時切換的方式。

v部署時切換

1.1 配置dev和qa環境數據,以備測試。

SpringBoot入門教程(三)通過properties實現多個數據庫環境自動切換配置

1.2 新增properties文件

SpringBoot入門教程(三)通過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

SpringBoot入門教程(三)通過properties實現多個數據庫環境自動切換配置

1.4 本地環境

當設置application.properties中spring.profiles.active=dev時,則此時啟動連接的是dev環境。

SpringBoot入門教程(三)通過properties實現多個數據庫環境自動切換配置

如上圖,此時運行得到的結果與配置文件一致,是dev環境的數據。

1.5 部署測試環境

部署測試環境,關於部署有不了解的可以看看《CentOS部署SpringBoot項目從0到1》,部署時切換到qa環境。

java -jar zuche-0.0.1-SNAPSHOT.jar --spring.profiles.active=qa --server.port=2008

SpringBoot入門教程(三)通過properties實現多個數據庫環境自動切換配置

可以看到日志中顯示的內容與預期一致,spring.profiles.active設置為qa, 端口設置為2008。

運行效果如下圖,部署以后連接的qa環境。

SpringBoot入門教程(三)通過properties實現多個數據庫環境自動切換配置

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實現多個數據庫環境自動切換配置

2.2 更新application.properties。

spring.profiles.active=@env@

注意@env@中的env可以理解為一個變量,需要與2.1.2中設置的${env}對應上。

2.3 添加Maven打包命令

clean package -P qa -D maven.test.skip=true

SpringBoot入門教程(三)通過properties實現多個數據庫環境自動切換配置

-D maven.test.skip=true不執行測試用例,也不編譯測試用例類。

2.4 執行Maven命令

SpringBoot入門教程(三)通過properties實現多個數據庫環境自動切換配置

查看jar包的application.properties文件的spring.profiles.active,看Maven命令是否生效。

SpringBoot入門教程(三)通過properties實現多個數據庫環境自動切換配置

如上圖,spring.profiles.active=qa

2.5 部署Tomcat

java -jar zuche-0.0.1-SNAPSHOT.jar --server.port=2008

SpringBoot入門教程(三)通過properties實現多個數據庫環境自動切換配置

Maven打包時已經設置了qa環境,部署命令中不需要再指明qa環境。

v博客總結

本文通篇講的主要是圍繞springboot部署jar包的兩種方式,至於war包,以后有時間再說說。

v源碼地址

https://github.com/toutouge/javademosecond/tree/master/hellospringboot


作  者:請叫我頭頭哥
出  處:http://www.cnblogs.com/toutou/
關於作者:專注於基礎平台的項目開發。如有問題或建議,請多多賜教!
版權聲明:本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接。
特此聲明:所有評論和私信都會在第一時間回復。也歡迎園子的大大們指正錯誤,共同進步。或者直接私信
聲援博主:如果您覺得文章對您有幫助,可以點擊文章右下角推薦一下。您的鼓勵是作者堅持原創和持續寫作的最大動力!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM