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

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

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

v環境介紹

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

開發環境(dev):git

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

測試環境(qa):github

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

生產環境(prod)spring

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

關於三個環境的切換已然標準化了,這裏只是一筆帶過一下,由於下文中的配置文件會跟三個環境有關聯。相信全部人都不會對這三個環境陌生的。sql

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

v部署時切換

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

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

1.2 新增properties文件app

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/
關於做者:專一於基礎平臺的項目開發。若有問題或建議,請多多賜教!
版權聲明:本文版權歸做者和博客園共有,歡迎轉載,但未經做者贊成必須保留此段聲明,且在文章頁面明顯位置給出原文連接。
特此聲明:全部評論和私信都會在第一時間回覆。也歡迎園子的大大們指正錯誤,共同進步。或者直接私信
聲援博主:若是您以爲文章對您有幫助,能夠點擊文章右下角推薦一下。您的鼓勵是做者堅持原創和持續寫做的最大動力!

相關文章
相關標籤/搜索