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


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

  1.SpringLoaded

  2.DevTools

區別:

  SpringLoaderSpringLoader 在部署項目時使用的是熱部署的方式。

 DevToolsDevTools 在部署項目時使用的是重新部署的方式




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

 

 

 

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

 

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

 

 

 

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

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM