嗯,挺全乎兒的,Spring Boot 多環境配置都在這裏了,你喜歡哪種?

持續原創輸出,點擊上方藍字關注我

目錄

  • 前言
  • Spring Boot 自帶的多環境配置
    • 創建不同環境的配置文件
    • 指定運行的環境
  • Maven 的多環境配置
    • 創建多環境配置文件
    • 定義激活的變量
    • pom 文件中定義 profiles
    • 資源過濾
    • 總結
  • 總結

前言

日常開發中至少有三個環境,分別是開發環境(dev),測試環境(test),生產環境(prod)。

不同的環境的各種配置都不相同,比如數據庫,端口,IP地址等信息。

那麼這麼多環境如何區分,如何打包呢?

本篇文章就來介紹一下Spring Boot 中多環境如何配置,如何打包。

Spring Boot 自帶的多環境配置

Spring Boot 對多環境整合已經有了很好的支持,能夠在打包,運行間自由切換環境。

那麼如何配置呢?下面將會逐步介紹。

創建不同環境的配置文件

既然每個環境的配置都不相同,索性將不同環境的配置放在不同的配置文件中,因此需要創建三個不同的配置文件,分別是application-dev.propertiesapplication-test.propertiesapplication-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.propertiesapplication-test.propertiesapplication-prod.properties

加上默認的配置文件application.properties同樣是四個配置文件。

定義激活的變量

需要將Maven激活的環境作用於Spring Boot,實際還是利用了spring.profiles.active這個屬性,只是現在這個屬性的取值將是取值於Maven。配置如下:

[email protected]@

profile.active實際上就是一個變量,在maven打包的時候指定的-P test傳入的就是值。

pom 文件中定義 profiles

需要在mavenpom.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選項卡中出現以下內容:

1
1

可以選擇打包的環境,然後點擊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 的兩種打包方式,每種方式有各自的優缺點,你更喜歡哪種呢?

源碼已經上傳,回覆關鍵詞多環境配置獲取。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章