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

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

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

前言

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

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

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

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

熱部署在服務(wù)器運(yùn)行時(shí)重新部署項(xiàng)目,即直接重新加載整個(gè)應(yīng)用,這種方式會(huì)釋放內(nèi)存,比熱加載更加干凈徹底,但同時(shí)也更費(fèi)時(shí)間

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

spring-boot-devtools

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

pom.xml 添加依賴

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

我們使用 IDEA 可以有兩種啟動(dòng)方式

手動(dòng)重啟

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

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

自動(dòng)重啟

首先需要按照如下步驟開(kāi)啟 IDEA 運(yùn)行時(shí)編譯

配置如下允許自動(dòng)構(gòu)建項(xiàng)目

image.png

然后再配置允許運(yùn)行時(shí)重啟

image.png

配置 application.yml

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

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

如果自動(dòng)重啟的開(kāi)銷和手動(dòng)重啟沒(méi)有什么太大差別,那么還不如手動(dòng)重啟(按需重啟)

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

HowSwap

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

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

image.png

image.png

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

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

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

JRebel

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

方法 1

注:該方法實(shí)測(cè)失敗,請(qǐng)使用方法 2 (但是方法 2 需要參考方法 1)

直接從 IDEA 插件市場(chǎng)安裝插件

image.png

image.png

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

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

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

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

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

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

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

image.png

方法 2

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

首先手動(dòng)下載  2022.4.1 版本插件壓縮包,然后在 IDEA 中手動(dòng)從磁盤(pán)中安裝插件

image.png

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

image.png

image.png

然后點(diǎn)擊「Work Offline」按鈕,設(shè)置 JRebel 為離線,避免因?yàn)榫W(wǎng)絡(luò)問(wèn)題導(dǎo)致激活失效

image.png

如何使用

注:使用 JRebel 同樣需要進(jìn)行上面 spring-boot-devtools 中 settings 中的配置。如果前面不配置,首次運(yùn)行 JRebel 會(huì)自動(dòng)提醒,并且詢問(wèn)是否自動(dòng)開(kāi)啟,到時(shí)候點(diǎn)擊"是"即可自動(dòng)配置

image.png

之后我們每次修改代碼后,保存后都會(huì)自動(dòng)熱加載,當(dāng)然如果想要手動(dòng)更新點(diǎn)擊刷新圖標(biāo)按鈕即可

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

相關(guān)文章

  • mybatis教程之resultmap_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    mybatis教程之resultmap_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    這篇文章主要介紹了mybatis教程之resultmap,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-09-09
  • Java8不可或缺小幫手之日期應(yīng)用

    Java8不可或缺小幫手之日期應(yīng)用

    jdk1.8后引入了新的日期時(shí)間處理API,相比傳統(tǒng)的date操作更加簡(jiǎn)便,date中的SimpleDateFormat也是非線程安全的,廢話不多說(shuō),開(kāi)干
    2023-05-05
  • springboot的war和jar包的使用詳解

    springboot的war和jar包的使用詳解

    這篇文章主要介紹了springboot的war和jar包的使用詳解,非常不錯(cuò),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下
    2018-11-11
  • Nacos?版本不一致報(bào)錯(cuò)Request?nacos?server?failed解決

    Nacos?版本不一致報(bào)錯(cuò)Request?nacos?server?failed解決

    這篇文章主要為大家介紹了Nacos?版本不一致報(bào)錯(cuò)Request?nacos?server?failed的解決方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • 攜程Apollo(阿波羅)安裝部署以及java整合實(shí)現(xiàn)

    攜程Apollo(阿波羅)安裝部署以及java整合實(shí)現(xiàn)

    這篇文章主要介紹了攜程Apollo(阿波羅)安裝部署以及java整合實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • Java中jstat命令的使用詳解

    Java中jstat命令的使用詳解

    jstat命令可以查看堆內(nèi)存各部分的使用量,以及加載類的數(shù)量,下面這篇文章主要給大家介紹了關(guān)于Java中jstat命令使用的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-03-03
  • Java獲取服務(wù)器狀態(tài)之CPU、內(nèi)存、存儲(chǔ)等核心信息監(jiān)控全攻略

    Java獲取服務(wù)器狀態(tài)之CPU、內(nèi)存、存儲(chǔ)等核心信息監(jiān)控全攻略

    作為一名剛?cè)胄械腏ava開(kāi)發(fā)者,了解如何獲取服務(wù)器的CPU和內(nèi)存使用情況是一項(xiàng)基本技能,這篇文章主要介紹了Java獲取服務(wù)器狀態(tài)之CPU、內(nèi)存、存儲(chǔ)等核心信息監(jiān)控的相關(guān)資料,需要的朋友可以參考下
    2026-04-04
  • Springboot自帶線程池的實(shí)現(xiàn)

    Springboot自帶線程池的實(shí)現(xiàn)

    本文主要介紹了Springboot自帶線程池的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • 使用maven實(shí)現(xiàn)有關(guān)Jsoup簡(jiǎn)單爬蟲(chóng)的步驟

    使用maven實(shí)現(xiàn)有關(guān)Jsoup簡(jiǎn)單爬蟲(chóng)的步驟

    這篇文章主要介紹了使用maven實(shí)現(xiàn)有關(guān)Jsoup簡(jiǎn)單爬蟲(chóng)的步驟,文中附含詳細(xì)示例代碼,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-09-09
  • java判斷用戶輸入的是否至少含有N位小數(shù)的實(shí)例

    java判斷用戶輸入的是否至少含有N位小數(shù)的實(shí)例

    下面小編就為大家分享一篇java判斷用戶輸入的是否至少含有N位小數(shù)的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2017-12-12

最新評(píng)論

新河县| 稻城县| 固安县| 太原市| 寻乌县| 万源市| 辰溪县| 法库县| 雷山县| 登封市| 湖南省| 洛扎县| 玉树县| 娱乐| 岱山县| 泰和县| 筠连县| 南昌市| 馆陶县| 资中县| 霍林郭勒市| 中西区| 英吉沙县| 乐业县| 曲沃县| 涞源县| 镇巴县| 安塞县| 九龙县| 石景山区| 玛曲县| 股票| 五峰| 通海县| 金寨县| 葫芦岛市| 安康市| 界首市| 潢川县| 伊春市| 广西|