1. 程式人生 > >SpringBoot(三)通過properties實現多個數據庫環境自動切換配置

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

方式 info 本地 所有 -c int 安裝 style 過多

前面的文章已經介紹了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環境數據,以備測試。

技術分享圖片

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