1. 程式人生 > >Idea環境實現SpringBoot實現兩種熱部署方式(親測有效)

Idea環境實現SpringBoot實現兩種熱部署方式(親測有效)

即將介紹的兩種熱部署方式:

  1.SpringLoaded

  2.DevTools

區別:

  SpringLoader:SpringLoader 在部署專案時使用的是熱部署的方式。

 DevTools:DevTools 在部署專案時使用的是重新部署的方式




SpringBoot版本:2.1.9-RELEASE

IDEA版本:2019.2.4

熱部署

  大家都知道在專案開發過程中,常常會改動頁面資料或者修改資料結構,為了顯示改動效果,往往需要重啟應用檢視改變效果,其實就是重新編譯生成了新的Class檔案,這個檔案裡記錄著和程式碼等對應的各種資訊,然後Class檔案將被虛擬機器的ClassLoader載入。

而熱部署正是利用了這個特點,它監聽到如果有Class檔案改動了,就會建立一個新的ClaassLoader進行載入該檔案,經過一系列的過程,最終將結果呈現在我們眼前。

 

類載入機制

  Java中的類經過編譯器可以把程式碼編譯為儲存位元組碼的Class檔案,該Class檔案儲存了各種資訊,最終要載入到虛擬機器中執行使用。

  虛擬機器把描述類的資料從Class檔案載入到記憶體中,並對資料進行校驗、轉換解析和初始化,最終形成可以被虛擬機器直接使用的Java型別。

 

 

 


 

SpringLoaded 實現熱部署方式:

缺陷:不會載入靜態資源,只加載類檔案,也就是隻熱部署載入class

  1.到mvn倉庫下載jar包

 

 

 

 

 

 下載後記住這個jar包的絕對路徑。接下來會用到

 

  2.配置SpringBoot的啟動引數配置

 

在VMOptions裡面新增 -javaagent:jar包路徑 -noverify

 

 

 3.以Debug模式進行啟動,再更改程式碼後會自動更新classes檔案,至此完成。

 

 


 

 

DevTools實現熱部署方式(自重啟)

在激活了開發者工具後,ClassPath裡對檔案做任何修改都會觸發應用程式重啟。為了讓重啟的速度夠快,不會修改的類(第三方JAR包)都載入到了基礎類載入器裡,而應用程式的程式碼則會載入到一個單獨的重啟類載入器裡。檢測到變更時,只會重啟類載入 器重啟。

  有些ClassPath裡的資源變更後不需要重啟應用程式。像Thymeleaf這樣的檢視模板可以直接編輯,不用重啟。在/static 或 /public裡的靜態資源也不用重啟應用程式,所以Spring Boot開發者工具在重啟時排除掉了如下目錄:/META-INF/resources、/resources、/static、/public、/templates。

一、pom依賴

 

  <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <optional>true</optional>
            <!--    optional目的是為了繼承他的專案不繼承這個devtools外掛        -->
  </dependency>


   <build>
        <plugins>
                <plugin>
                    <!--熱部署配置-->
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <configuration>
                        <!--fork:如果沒有該項配置,整個devtools不會起作用(根據個人情況而定,最好加上)-->
                        <fork>true</fork>
                    </configuration>
                </plugin>
        </plugins>
    </build>

 

二、勾選Build project automatically(自動構建)

 

 

三、IDEA 設定為在程式執行過程中,依然允許自動編譯

步驟: ctrl + shift + alt + /,選擇Registry,勾選勾上 Compiler autoMake allow when app running

 

 

 

 勾選目標的位置自己找找,排列順序不一樣,勾選後記得重啟生效!

 

四、設定自動載入資源配置和編譯

 

 

 

就此全部完成,有什麼問題歡迎隨時留言,遠端協助~

 

 

 

 

&n