持續原創輸出,點選上方藍字關注我
目錄
前言 Spring Boot 自帶的多環境配置 建立不同環境的配置檔案 指定執行的環境
Maven 的多環境配置 建立多環境配置檔案 定義啟用的變數 pom 檔案中定義 profiles 資源過濾 總結
總結
前言
日常開發中至少有三個環境,分別是開發環境(dev
),測試環境(test
),生產環境(prod
)。
不同的環境的各種配置都不相同,比如資料庫,埠,IP
地址等資訊。
那麼這麼多環境如何區分,如何打包呢?
本篇文章就來介紹一下Spring Boot
中多環境如何配置,如何打包。
Spring Boot 自帶的多環境配置
Spring Boot 對多環境整合已經有了很好的支援,能夠在打包,執行間自由切換環境。
那麼如何配置呢?下面將會逐步介紹。
建立不同環境的配置檔案
既然每個環境的配置都不相同,索性將不同環境的配置放在不同的配置檔案中,因此需要建立三個不同的配置檔案,分別是application-dev.properties
、application-test.properties
、application-prod.properties
。
「注意」:配置檔案的名稱一定要是application-name.properties
或者application-name.yml
格式。這個name
可以自定義,主要用於區分。
此時整個專案中就有四個配置檔案,加上
application.properties
。
指定執行的環境
雖然你建立了各個環境的配置檔案,但是Spring Boot
仍然不知道你要執行哪個環境,有以下兩種方式指定:
配置檔案中指定
在application.properties
或者application.yml
檔案中指定,內容如下:
# 指定執行環境為測試環境
spring.profiles.active=test
以上配置有什麼作用呢?
如果沒有指定執行的環境,Spring Boot
預設會載入application.properties
檔案,而這個的檔案又告訴Spring Boot
去找test
環境的配置檔案。
執行 jar 的時候指定
Spring Boot
內建的環境切換能夠在執行Jar
包的時候指定環境,命令如下:
java -jar xxx.jar --spring.profiles.active=test
以上命令指定了執行的環境是test
,是不是很方便呢?
Maven 的多環境配置
Maven
本身也提供了對多環境的支援,不僅僅支援Spring Boot
專案,只要是基於Maven
的專案都可以配置。
Maven
對於多環境的支援在功能方面更加強大,支援JDK版本
、資原始檔
、作業系統
等等因素來選擇環境。
如何配置呢?下面逐一介紹。
建立多環境配置檔案
建立不同環境的配置檔案,分別是application-dev.properties
、application-test.properties
、application-prod.properties
。
加上預設的配置檔案application.properties
同樣是四個配置檔案。
定義啟用的變數
需要將Maven
啟用的環境作用於Spring Boot
,實際還是利用了spring.profiles.active
這個屬性,只是現在這個屬性的取值將是取值於Maven
。配置如下:
spring.profiles.active=@profile.active@
profile.active
實際上就是一個變數,在maven
打包的時候指定的-P test
傳入的就是值。
pom 檔案中定義 profiles
需要在maven
的pom.xml
檔案中定義不同環境的profile
,如下:
<!--定義三種開發環境-->
<profiles>
<profile>
<!--不同環境的唯一id-->
<id>dev</id>
<activation>
<!--預設啟用開發環境-->
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<!--profile.active對應application.yml中的@profile.active@-->
<profile.active>dev</profile.active>
</properties>
</profile>
<!--測試環境-->
<profile>
<id>test</id>
<properties>
<profile.active>test</profile.active>
</properties>
</profile>
<!--生產環境-->
<profile>
<id>prod</id>
<properties>
<profile.active>prod</profile.active>
</properties>
</profile>
</profiles>
標籤<profile.active>
正是對應著配置檔案中的@profile.active@
。
<activeByDefault>
標籤指定了預設啟用的環境,則是打包的時候不指定-P
選項預設選擇的環境。
以上配置完成後,將會在IDEA的右側Maven
選項卡中出現以下內容:
可以選擇打包的環境,然後點選package
即可。
或者在專案的根目錄下用命令打包,不過需要使用-P
指定環境,如下:
mvn clean package package -P test
maven
中的profile
的啟用條件還可以根據jdk
、作業系統
、檔案存在或者缺失
來啟用。這些內容都是在<activation>
標籤中配置,如下:
<!--activation用來指定啟用方式,可以根據jdk環境,環境變數,檔案的存在或缺失-->
<activation>
<!--配置預設啟用-->
<activeByDefault>true</activeByDefault>
<!--通過jdk版本-->
<!--當jdk環境版本為1.8時,此profile被啟用-->
<jdk>1.8</jdk>
<!--當jdk環境版本1.8或以上時,此profile被啟用-->
<jdk>[1.8,)</jdk>
<!--根據當前作業系統-->
<os>
<name>Windows XP</name>
<family>Windows</family>
<arch>x86</arch>
<version>5.1.2600</version>
</os>
</activation>
資源過濾
如果你不配置這一步,將會在任何環境下打包都會帶上全部的配置檔案,但是我們可以配置只保留對應環境下的配置檔案,這樣安全性更高。
這一步配置很簡單,只需要在pom.xml
檔案中指定<resource>
過濾的條件即可,如下:
<build>
<resources>
<!--排除配置檔案-->
<resource>
<directory>src/main/resources</directory>
<!--先排除所有的配置檔案-->
<excludes>
<!--使用萬用字元,當然可以定義多個exclude標籤進行排除-->
<exclude>application*.properties</exclude>
</excludes>
</resource>
<!--根據啟用條件引入打包所需的配置和檔案-->
<resource>
<directory>src/main/resources</directory>
<!--引入所需環境的配置檔案-->
<filtering>true</filtering>
<includes>
<include>application.yml</include>
<!--根據maven選擇環境匯入配置檔案-->
<include>application-${profile.active}.yml</include>
</includes>
</resource>
</resources>
</build>
上述配置主要分為兩個方面,第一是先排除所有配置檔案,第二是根據profile.active
動態的引入配置檔案。
總結
至此,Maven
的多環境打包已經配置完成,相對來說挺簡單,既可以在IDEA
中選擇環境打包,也同樣支援命令-P
指定環境打包。
總結
本文介紹了Spring Boot 的兩種打包方式,每種方式有各自的優缺點,你更喜歡哪種呢?
原始碼已經上傳,回覆關鍵詞
多環境配置
獲取。