最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

IDEA代碼熱部署和熱加載的三種實現(xiàn)方案

 更新時間:2023年11月16日 09:46:41   作者:ReturnTmp  
在日常開發(fā)中,我們需要經(jīng)常修改 Java 代碼,手動重啟項目,查看修改后的效果,如果在項目小時,重啟速度比較快,等待的時間是較短的,我們可以使用代碼熱加載和熱部署解決該問題,本文給大家介紹了三種實現(xiàn)方案,需要的朋友可以參考下

前言

在日常開發(fā)中,我們需要經(jīng)常修改 Java 代碼,手動重啟項目,查看修改后的效果。如果在項目小時,重啟速度比較快,等待的時間是較短的。但是隨著項目逐漸變大,重啟的速度變慢,等待時間 1-2 min 是比較常見的

我們可以使用代碼熱加載和熱部署解決該問題,目前實現(xiàn)方案主要有如下三種

spring-boot-devtools【不推薦】IDEA 自帶 HowSwap 功能【推薦】JRebel 插件【最推薦】

嚴格意義上,我們需要區(qū)分下熱部署和熱加載

熱部署在服務器運行時重新部署項目,即直接重新加載整個應用,這種方式會釋放內(nèi)存,比熱加載更加干凈徹底,但同時也更費時間

熱加載在在運行時重新加載類,從而升級應用。熱加載的實現(xiàn)原理主要依賴 java 的類加載機制,在實現(xiàn)方式可以概括為在容器啟動的時候起一條后臺線程,定時的檢測類文件的時間戳變化,如果類的時間戳變掉了,則將類重新載入。對比反射機制,反射是在運行時獲取類信息,通過動態(tài)的調(diào)用來改變程序行為;熱加載則是在運行時通過重新加載改變類信息,直接改變程序行為

spring-boot-devtools

注:本種方式重新加載速度過慢,不推薦

pom.xml 添加依賴

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <optional>true</optional> <!-- 可以防止將devtools依賴傳遞到其他模塊中 -->
    </dependency>
</dependencies>

我們使用 IDEA 可以有兩種啟動方式

手動重啟

無任何配置時,當我們啟動應用之后,可以手動觸發(fā)重啟更新(Ctrl+F9),也可以使用 mvn compile 編譯觸發(fā)重啟更新

雖然這樣可以減少加載時間,但是依舊是需要手動啟動的,不太方便,所以可以使用如下自動重啟方式

自動重啟

首先需要按照如下步驟開啟 IDEA 運行時編譯

配置如下允許自動構建項目

image.png

然后再配置允許運行時重啟

image.png

配置 application.yml

spring:
  devtools:
    restart:
      enabled: true  #設置開啟熱部署
      additional-paths: src/main/java #重啟目錄
      exclude: WEB-INF/**
  thymeleaf:
    cache: false #使用Thymeleaf模板引擎,關閉緩存

其實理論上來說,devtool 本身基于重啟方式,這種仍然不是真正的熱替換方案,所以實際開發(fā)中慎用

如果自動重啟的開銷和手動重啟沒有什么太大差別,那么還不如手動重啟(按需重啟)

多數(shù)情況下,如果是方法內(nèi)部的修改或者靜態(tài)資源的修改,在 IDEA 中是可以通過 Rebuild(Ctrl + Shift + F9)進行熱更的

HowSwap

該功能是 IDEA Ultimate 旗艦版的專屬功能,不支持 IDEA Community 社區(qū)版

設置 Spring Boot 啟動類,開啟 HotSwap 功能,之后 Debug 運行該啟動類,等待項目啟動完成。
之后每次修改 Java 代碼后,點擊左下角的「熱加載」按鈕,即可實現(xiàn)代碼熱加載。

image.png

image.png

IDEA 自帶 HowSwap 功能,支持比較有限,很多修改都不支持。例如說:

  • 只能增加方法或字段但不可以減少方法或字段
  • 只能增加可見性不能減少
  • 只能維持已有方法的簽名而不能修改等等。

簡單來說,只支持方法內(nèi)的代碼修改熱加載,所以如果想要相對完美的方案,建議使用 JRebel 插件

JRebel

JRebel 安裝配置及激活方式有如下兩種

方法 1

注:該方法實測失敗,請使用方法 2 (但是方法 2 需要參考方法 1)

直接從 IDEA 插件市場安裝插件

image.png

image.png

安裝 JRebel 插件后,注冊地址填寫激活網(wǎng)址 + 生成的 GUID,郵箱隨便填寫,然后直接激活即可

激活網(wǎng)址列表,盡量用排序靠前的

http://jrebel-license.jiweichengzhu.com/{GUID}

https://jrebel.qekang.com/{GUID}

GUID 可以使用如下地址在線生成,然后替換上面的{GUID}就行

GUID 生成在線鏈接:在線GUID隨機生成工具-Bejson.com

郵箱地址可隨便輸入,選擇我同意,最后提交即可

image.png

方法 2

下載鏈接:JRebel and XRebel - IntelliJ IDEs Plugin | Marketplace (jetbrains.com)

首先手動下載  2022.4.1 版本插件壓縮包,然后在 IDEA 中手動從磁盤中安裝插件

image.png

安裝完成之后重啟,之后按照如下步驟進行,之后的激活網(wǎng)址和郵箱參照方法 1 方法填寫即可

image.png

image.png

然后點擊「Work Offline」按鈕,設置 JRebel 為離線,避免因為網(wǎng)絡問題導致激活失效

image.png

如何使用

注:使用 JRebel 同樣需要進行上面 spring-boot-devtools 中 settings 中的配置。如果前面不配置,首次運行 JRebel 會自動提醒,并且詢問是否自動開啟,到時候點擊"是"即可自動配置

image.png

之后我們每次修改代碼后,保存后都會自動熱加載,當然如果想要手動更新點擊刷新圖標按鈕即可

以上就是IDEA代碼熱部署和熱加載的三種實現(xiàn)方案的詳細內(nèi)容,更多關于IDEA代碼熱部署和熱加載的資料請關注腳本之家其它相關文章!

相關文章

最新評論

衡阳市| 永平县| 桃园县| 大洼县| 宝坻区| 山丹县| 汕尾市| 遂溪县| 浦东新区| 南城县| 巴林左旗| 葵青区| 连山| 和平区| 遂宁市| 吴川市| 化德县| 奉节县| 牙克石市| 鄂伦春自治旗| 辉南县| 平南县| 赤壁市| 含山县| 扎兰屯市| 马山县| 成武县| 突泉县| 余江县| 康定县| 特克斯县| 彝良县| 嘉兴市| 沙河市| 潮安县| 蛟河市| 星子县| 黔江区| 石楼县| 清流县| 通许县|