IDEA熱更新代碼的兩種方式詳解
說(shuō)明:本文介紹使用 IDEA 熱更新代碼的兩種方式,可以實(shí)現(xiàn)不重啟項(xiàng)目完成代碼更新,以 Java 項(xiàng)目為例。
方式一:系統(tǒng)配置
在旗艦版 IDEA 中,有代碼熱更新的設(shè)置,可以點(diǎn)擊 IDEA 菜單欄,選擇 Help > About,查看版本是否為 Ultimate Edition,該版本是旗艦版。(Ultimate,奧特曼,極限的,終極的意思)

打開(kāi)啟動(dòng)項(xiàng)目的配置界面,如下:

在該界面,選擇 Modifily options > On 'Update' action > Update classes and resources,選完記得點(diǎn) Apply,應(yīng)用并退出

測(cè)試一下,啟動(dòng)項(xiàng)目

試下這個(gè)接口

調(diào)用,返回 Hello World!,沒(méi)問(wèn)題

修改返回內(nèi)容如下

修改完,雖不需要重啟項(xiàng)目,但需要點(diǎn)一下這個(gè)更新按鈕

看!調(diào)用接口后,返回了更新后的內(nèi)容

方式二:插件
第二種方式,是下載一個(gè)插件,叫 JRebel and XRebel,(地址:JRebel and XRebel Plugin for IntelliJ IDEA | JetBrains Marketplace)
必須下載 2022.4.1版本

下載下來(lái)后是一個(gè)壓縮包文件

通過(guò)導(dǎo)入的方式,安裝到 IDEA 中,Install Plugin from Disk...,從本地磁盤中安裝插件

選擇插件壓縮包

安裝后,插件界面點(diǎn) Apply 應(yīng)用并退出,會(huì)彈出這個(gè)窗口,選擇 Restart 重啟 IDEA,插件要重啟后才能使用。

重啟后進(jìn)入插件配置,激活插件,其中注冊(cè)地址填 https://jrebel.qekang.com/1e67ec1b-122f-4708-87d0-c1995dc0cdaa,注冊(cè)郵箱隨便寫
(我已經(jīng)激活過(guò)了,所以沒(méi)有 Active 按鈕,沒(méi)有注冊(cè)應(yīng)該有這個(gè)按鈕)

激活成功后,點(diǎn) Work offline,離線,避免不必要的麻煩

好了,接下來(lái)可以使用該插件完成項(xiàng)目熱更新。
選擇你需要啟動(dòng)的服務(wù),可以看到有兩個(gè)帶有插件圖標(biāo)的啟動(dòng)按鈕,分別表示使用該插件啟動(dòng)服務(wù),和使用該插件以 debug 方式啟動(dòng)該服務(wù)

如果你的 IDEA 中沒(méi)有這個(gè)界面,可按照下述操作展示
(第一步:展示服務(wù)工具欄)

(第二步:添加項(xiàng)目中的服務(wù),如果你的項(xiàng)目是 Spring Boot 項(xiàng)目)

回歸主題,點(diǎn)擊圖標(biāo),啟動(dòng)項(xiàng)目

還是這個(gè)接口

調(diào)用,沒(méi)有問(wèn)題

修改接口返回值,控制臺(tái)可見(jiàn)插件更新的日志

調(diào)用接口,接口返回內(nèi)容已更新,代碼完成熱更新

區(qū)別&特點(diǎn)
介紹一下兩種方式的區(qū)別&特點(diǎn),
(1)系統(tǒng)配置的方式,以下操作是不能熱更新的,也就是說(shuō)這種方式有局限性
- 只對(duì)增加的方法或字段生效,減少的方法或字段不會(huì)熱更新;
- 只能增加可見(jiàn)性,不能減少;
- 只能維持已有方法的簽名,而不能修改;
相當(dāng)于只能對(duì)增加的修改生效,減少的修改不生效。
(2)插件方式,沒(méi)有系統(tǒng)配置方式的局限,另外系統(tǒng)配置的方式,更新完代碼是需要手動(dòng)刷新的,而插件方式不用,它是定時(shí)周期更新的,周期時(shí)長(zhǎng)可以在配置中設(shè)置,如下:

可想而知的是,時(shí)長(zhǎng)越短,頻率越高,時(shí)效越小,但如果你的項(xiàng)目類比較多,IDEA 肯定會(huì)比較卡,參考 Sonar(掃描代碼規(guī)范、漏洞的插件)
總結(jié)
以上就是IDEA熱更新代碼的兩種方式詳解的詳細(xì)內(nèi)容,更多關(guān)于IDEA熱更新代碼的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
基于Zookeeper實(shí)現(xiàn)服務(wù)注冊(cè)和服務(wù)發(fā)現(xiàn)功能
無(wú)論是采用SOA還是微服務(wù)架構(gòu),都需要使用服務(wù)注冊(cè)和服務(wù)發(fā)現(xiàn)組件,本文將基于 Zookeeper 實(shí)現(xiàn)服務(wù)注冊(cè)和服務(wù)發(fā)現(xiàn)功能,如果跟我一樣有同樣的困惑,希望可以通過(guò)本文了解其他組件如何使用 Zookeeper 作為注冊(cè)中心的工作原理2023-09-09
Java實(shí)現(xiàn)升級(jí)版布谷鳥(niǎo)闖關(guān)游戲的示例代碼
升級(jí)版布谷鳥(niǎo)闖關(guān)游戲是一個(gè)基于java的布谷鳥(niǎo)闖關(guān)游戲,鼠標(biāo)左鍵點(diǎn)擊控制鳥(niǎo)的位置穿過(guò)管道間的縫隙。文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2022-02-02
Java雜談之類和對(duì)象 封裝 構(gòu)造方法以及代碼塊詳解
在現(xiàn)實(shí)世界中,真實(shí)存在的東西,比如吉普車,卡丁車,貨車。我們?cè)谡J(rèn)識(shí)它的時(shí)候就會(huì)在腦海中將它抽象為一種類別叫做車。 好了,那再計(jì)算機(jī)世界中,它同樣的也會(huì)這樣做2021-09-09
在Spring中利用@Order注解對(duì)bean和依賴進(jìn)行排序
在Spring框架中,@Order是一個(gè)經(jīng)常被忽視但非常重要的注解,在項(xiàng)目開(kāi)發(fā)中,當(dāng)我們需要維護(hù)bean的特定順序或者存在許多相同類型的bean時(shí),這個(gè)注解就發(fā)揮了作用,這篇文章講的就是如何利用@Order注解對(duì)bean和依賴進(jìn)行排序,需要的朋友可以參考下2023-11-11
Java的ThreadPoolExecutor業(yè)務(wù)線程池詳細(xì)解析
這篇文章主要介紹了Java線程池ThreadPoolExecutor詳細(xì)解析,任務(wù)剛開(kāi)始進(jìn)來(lái)的時(shí)候就創(chuàng)建核心線程,核心線程滿了會(huì)把任務(wù)放到阻塞隊(duì)列,阻塞隊(duì)列滿了之后才會(huì)創(chuàng)建空閑線程,達(dá)到最大線程數(shù)之后,再有任務(wù)進(jìn)來(lái),就只能執(zhí)行拒絕策略了,需要的朋友可以參考下2024-01-01
Spring Security OAuth 自定義授權(quán)方式實(shí)現(xiàn)手機(jī)驗(yàn)證碼
這篇文章主要介紹了Spring Security OAuth 自定義授權(quán)方式實(shí)現(xiàn)手機(jī)驗(yàn)證碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02
java實(shí)現(xiàn)發(fā)送手機(jī)短信
這篇文章主要介紹了java實(shí)現(xiàn)發(fā)送手機(jī)短信,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-03-03
基于SpringBoot開(kāi)機(jī)啟動(dòng)與@Order注解
這篇文章主要介紹了SpringBoot開(kāi)機(jī)啟動(dòng)與@Order注解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09
Spring為singleton?bean注入prototype?bean
這篇文章主要介紹了Spring為singleton?bean注入prototype?bean,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-07-07

