天天看點

SpringBoot 實作動态配置及項目打包部署上線

一、動态配置檔案

SpringBoot 實作動态配置及項目打包部署上線

我們需要了解Spring動态指定配置檔案的方式,來提高我們的部署效率。

1.1、概述

在實際企業開發中,開發環境、測試環境、生産環境通常采用不同的資料庫等中間件的連接配接方式。如果此時我們按照目前的方式,隻有一個application.yml配置檔案,那麼我們在不同環境下啟動項目,都需要更改配置檔案中的各種連接配接資訊,雖然目前我們需要更改的連接配接位址少,但是每次去手動的更改這些資訊,人工改的話是非常容易改錯的。

Spring 提供了可以指定配置檔案啟動的方式,這樣使得我們可以靈活的切換配置檔案。

目前項目中也使用了這個指定配置檔案的方式,隻不過是在配置檔案中指定的。代碼如下圖:

SpringBoot 實作動态配置及項目打包部署上線

我們要做的是,在啟動的時候指定。我們需要複制配置檔案application.yml和application-druid.yml,命名為application-prod.yml和application-druid-prod.yml,用來區分開發環境和生産環境,多個環境同理。

不指定配置檔案,預設讀取application.yml,我們開發的時候,可以直接啟動項目。我們也可以分出一個dev的配置,這個看個人開發習慣。

1.2、啟動方式

1.2.1、jar包啟動

在區分出了生産環境的配置後,我們通過jar包方式啟動項目的時候,增加參數指定,可以在啟動項目的時候,指定配置檔案。代碼如下:

java -jar xxx.jar --spring.profiles.active=prod,druid-prod
           

注意:

指定多個配置檔案,使用,号分割。

啟動項目的時候指定了配置檔案,在yml中配置的 spring.profiles.active 會失效

1.2.2、IDEA啟動配置

  • 在 IDEA 中配置profiles是非常簡單的。
  • 點選 IDEA 上方菜單Run
  • 選擇Edit Configurations...
  • 選擇Spring Boot下的 MyProjectServerApplication
  • 找到Active profiles輸入框,輸入需要指定的配置檔案字尾。例如:prod,druid-prod
  • 點選OK即可。

如下圖:

SpringBoot 實作動态配置及項目打包部署上線
SpringBoot 實作動态配置及項目打包部署上線

配置好後,使用IDEA啟動項目,就會自動指定配置檔案了。不需要的時候,直接删掉儲存就可以了。

二、項目打包

我們在生産環境運作的時候,是使用jar的方式啟動的。這裡就需要我們将我們的項目打成jar,然後把項目運作起來。

項目結構如下:

SpringBoot 實作動态配置及項目打包部署上線

本次建構的項目服務子產品my-project-server依賴my-project-dependencies和my-project-common。是以需要先把這兩個子產品install安裝到本地,以便my-project-server打包的時候,可以依賴到這兩個子產品。

項目打包的方式有多種,這裡就簡單介紹常用的兩種方式。

2.1、IDEA打包

IDEA 打包方法:

  • 點選右側Maven菜單
  • 輕按兩下打開要操作的子產品
  • 點選Lifecyle
  • 輕按兩下需要進行的操作。例如:clean、install、package

如下圖:

SpringBoot 實作動态配置及項目打包部署上線

步驟:

  • install安裝my-project-dependencies
  • install安裝my-project-common
  • package打包my-project-server

2.2、Maven指令打包

步驟還是跟上個方式的步驟一緻,不一樣的是使用Maven指令,這裡借助bat的方式,一次完成。

在子產品同濟目錄下建立一個bin目錄後,建立批處理檔案package.bat。代碼如下:

cd ..
cd my-project-dependencies
call mvn install

cd ..
cd my-project-common
call mvn clean install -Dmaven.test.skip=true

cd ..
cd my-project-server
call mvn clean package -Dmaven.test.skip=true

cd ..
           

打包時,隻需要執行bin目錄下的package.bat檔案即可完成打包。

-Dmaven.test.skip=true 意思為跳過測試。項目打包過程中,會執行我們編寫的測試類。我們在日常項目開發過程中,或多或少會寫測試類,這個參數就可以在打包的時候,跳過測試類的執行。

三、項目部署

打包完成後,會在項目的target目錄下生成一個項目的jar包,這個就是我們最終運作的程式了。如圖所示:

SpringBoot 實作動态配置及項目打包部署上線

3.1、安裝環境

打包完成後,我們會将程式上傳至伺服器進行運作,伺服器需要安裝Java運作環境。

1)、下載下傳

下載下傳位址:

https://www.oracle.com/java/technologies/downloads/#java8

找到Linux版本進行下載下傳,可能需要登入,登入下載下傳即可。

SpringBoot 實作動态配置及項目打包部署上線

2)、建立目錄mkdir -p /usr/local/java

3)、上傳檔案至該目錄

SpringBoot 實作動态配置及項目打包部署上線
$ ls -al
total 144704
drwxr-xr-x  2 root root      4096 Oct  5 15:19 ./
drwxr-xr-x 14 root root      4096 Oct  5 15:18 ../
-rw-r--r--  1 root root 148162542 Oct  5 15:19 jdk-8u341-linux-x64.tar.gz
           

4)、解壓縮

tar -zxvf jdk-8u341-linux-x64.tar.gz
           

5)、配置系統變量

vim /etc/environment
           

添加如下語句

export JAVA_HOME=/usr/local/java/jdk1.8.0_341
export JRE_HOME=/usr/local/java/jdk1.8.0_341/jre
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
           

6)、配置使用者環境變量

vim /etc/profile
           

添加如下語句

export JAVA_HOME=/usr/local/java/jdk1.8.0_341
export JRE_HOME=/usr/local/java/jdk1.8.0_341/jre
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin
           

環境變量生效

source /etc/profile
           

7)、測試

$ java -version
java version "1.8.0_341"
Java(TM) SE Runtime Environment (build 1.8.0_341-b10)
Java HotSpot(TM) 64-Bit Server VM (build 25.341-b10, mixed mode)
           

出現正常的版本号,說明安裝成功啦~

3.2、項目啟動

建立目錄

mkdir -p /usr/local/apps/my-project
           

将之前項目打包的jar包上傳至該目錄

SpringBoot 實作動态配置及項目打包部署上線

啟動項目有多種方式

前台啟動一,這種方式啟動,會在視窗上輸出啟動日志,如果關閉視窗或者Ctrl+C,會終止程式。

java -jar my-project-server-1.0.0-SNAPSHOT.jar
           

前台啟動二,這種方式啟動,也會在視窗上輸出啟動日志,如果Ctrl+C,程式依然正常運作。

java -jar my-project-server-1.0.0-SNAPSHOT.jar &
           

背景啟動,這種方式,不會再視窗上輸出啟動日志,如果關閉視窗程式依然正常運作。推薦

nohup java -jar my-project-server-1.0.0-SNAPSHOT.jar &
           

3.3、最終效果

啟動後,通路http://IP:8899/sys-user/get/all,即可通路查詢所有使用者接口

SpringBoot 實作動态配置及項目打包部署上線

作者:微楓Micromaple

來源:https://blog.csdn.net/qq_41779565/article/details/127191733

點選關注,帶你了解更多

繼續閱讀