自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

推薦你使用JRebel提升開發(fā)效率

開發(fā) 項目管理
項目每次啟動都要一分多鐘,改一行代碼就要重啟很難受?推薦一款提高工作效率的熱加載JVM插件:JRebel。

[[393851]]

項目每次啟動都要一分多鐘,改一行代碼就要重啟很難受?推薦一款提高工作效率的熱加載JVM插件:JRebel。

JRebel筆者也用很長一段時間了,這貨確實(shí)幫我省了不少時間,所以才強(qiáng)烈推薦大家使用。

這是一款實(shí)現(xiàn)熱加載的JVM插件,官方也為IDEA提供了JRebel IDEA 插件,使用和安裝也都非常簡單,動動手指就能找到很多安裝教程。

推薦參考這篇文章的破解教程,簡單可用:《JRebel破解最簡單的使用》,鏈接:https://juejin.cn/post/6844903950781677582。

安裝插件后,在idea的左側(cè)工具欄可以看到j(luò)rebel選項,點(diǎn)開后勾選需要使用jrebel插件的應(yīng)用,如下圖所示。

勾選后,當(dāng)前項目的DEBUG一欄會出現(xiàn)有jrebel logo的debug按鈕,如下圖所示。

當(dāng)我們修改某個類后,如果想要即時生效,可在當(dāng)前類的編輯窗口中右鍵,選擇Compile And Reload File,如下圖所示。

官網(wǎng)強(qiáng)調(diào)JRebel是實(shí)現(xiàn)熱加載的JVM插件,那熱加載與熱部署有何不同呢?

  • 熱部署:jvm進(jìn)程不重啟,重新加載整個web應(yīng)用;
  • 熱加載:運(yùn)行時重新加載類。

我們熟知的Tomcat就是使用熱部署實(shí)現(xiàn)不重啟JVM支持多web應(yīng)用部署以及重新部署,對web應(yīng)用而言是已經(jīng)重啟了,而JRebel是使用熱加載實(shí)現(xiàn)不重啟應(yīng)用也能使修改生效。

如果你做過Android應(yīng)用開發(fā),那么你應(yīng)該還熟悉一個詞:熱修復(fù)。

17年筆者在做Android應(yīng)用開發(fā)的時候熱修復(fù)這項技術(shù)就非?;?,如熱門代表:手Q空間超級補(bǔ)丁技術(shù)、微信Tinker、阿里百川HotFix。手Q空間超級補(bǔ)丁技術(shù)、微信Tinker在實(shí)現(xiàn)原理上都是通過在應(yīng)用啟動時將新的dex替換舊的dex實(shí)現(xiàn)(替換class),需要應(yīng)用重啟才生效,阿里百川推出的熱修復(fù)HotFix則不同于前兩者,下拉補(bǔ)丁后無需重啟應(yīng)用就能立即生效。

為什么Android應(yīng)用開發(fā)領(lǐng)域的熱修復(fù)可以那么火?不同于WEB應(yīng)用更新,WEB應(yīng)用更新用戶是被動接受,而Android版本更新需要用戶主動去更新。而使用熱修復(fù)可以實(shí)現(xiàn)讓用戶被動接受更新,在應(yīng)用重啟時神不知鬼不覺的動態(tài)修復(fù)bug,優(yōu)化用戶體驗,同時也就減少APP的卸載率。

隨著后端項目不斷臃腫,導(dǎo)致依賴的很多框架初始耗時越來越長,熱加載開始被用于提升后端開發(fā)效率,被用到后端開發(fā)調(diào)試上。當(dāng)然,也有使用熱加載實(shí)現(xiàn)修復(fù)線上bug的,但在微服務(wù)容器化部署時代,已經(jīng)體現(xiàn)不出這樣做的價值了。

你可能會說,現(xiàn)在微服務(wù)不會很臃腫,本地調(diào)試重啟也就幾秒鐘的事情,使用它效率也不明顯。但如果重啟需要重新登錄或者說需要做一些初始化工作就不好說了。

盡管熱加載很實(shí)用,它可以幫我們省去大部分改寫代碼的重啟時間。但也并不是所有場景都能使用熱加載替代重啟。

如果我們改動的是Mybatis的SQL、Spring的注解或配置類等,我們依然需要重啟應(yīng)用。原因很好理解,我們就以依賴Spring和Mybatis框架的應(yīng)用為例說明。

首先是修改Spring配置類或者一些類上的注解重新編譯熱加載后發(fā)現(xiàn)修改并未生效,這是因為Spring只在容器啟動時應(yīng)用配置類、掃描Bean類時讀取類上的注解等。

其次是Mybatis,無論我們修改的是注解上的Sql還是xml文件中的Sql都不會生效,因為Mybatis初始化時就需要讀取xml文件中的sql或者接口方法上注解的sql來為接口生成代理類,后續(xù)不會再用到注解或xml文件,因此動態(tài)修改不會生效。

說到Mybatis,筆者找到一款I(lǐng)DEA插件能夠解決修改sql需要重啟應(yīng)用的問題:【jrebel-mybatisplus-idea-plugin】https://github.com/SweetInk/jrebel-mybatisplus。

關(guān)于JRebel的實(shí)現(xiàn)原理筆者也不了解,因為找不到更多資料,JRebel也不開源。如果讓我實(shí)現(xiàn)一個簡單的熱加載,我也有一個簡單的思路,通過已知的Java Agent和IDEA插件知識,可以通過動態(tài)重新加載類的方式完成簡單的方法代碼改寫,也會有應(yīng)用場景,如修復(fù)調(diào)試時發(fā)現(xiàn)的空指針異常、不涉及其它框架的業(yè)務(wù)邏輯錯誤、組件邏輯錯誤等,避免過多的應(yīng)用重啟。

本文轉(zhuǎn)載自微信公眾號「Java藝術(shù)」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系Java藝術(shù)公眾號。  

 

責(zé)任編輯:武曉燕 來源: Java藝術(shù)
相關(guān)推薦

2022-05-27 08:40:27

java工具

2022-06-28 10:58:21

工具Java

2018-02-04 22:29:21

iOS開發(fā)

2021-12-21 14:00:25

WebpackDevServer的開發(fā)

2009-06-05 15:04:36

Eclipse代碼模版

2024-02-27 11:17:38

前端自動化測試開發(fā)

2010-08-12 17:56:58

ibmdwRational

2018-03-06 17:24:57

2022-07-18 08:08:16

Go?語言技巧

2012-07-26 10:51:00

JavaScript

2019-10-09 10:10:42

軟件Windows程序員

2015-07-27 09:49:39

IOS開源庫

2016-10-09 20:07:43

2025-04-27 01:22:00

Visual開發(fā)

2020-03-12 09:19:55

前端開發(fā)Chrome

2024-11-28 13:07:33

2019-07-26 12:18:41

JavaSQL網(wǎng)絡(luò)硬盤

2020-08-09 18:06:57

Linux系統(tǒng)工具

2022-09-23 08:00:00

開發(fā)安全低代碼平臺

2020-11-25 19:57:15

開發(fā)技能代碼
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號