昨天看到团子推送的一篇关于热部署的文章,其中介绍了自研的Sonic插件在公司内部的应用。同时晒出来一张对比图:

团子表示我们的插件要比同类插件优秀哦。不过我定睛一看,好家伙,第一列的JRebel在图中的描述,除了远程debug相关的功能,其他的基本和团子的插件不相上下啊!没机会使用团子插件的朋友们,如果只是想提升本地开发效率,绝对要试一试JRebel啊!

为啥要用热部署插件?

想到了年轻的时候,每次改动代码之后,都要重新启动项目。项目小倒是还好,大一些的项目,加载的东西多,要等上一两分钟。当时就想,如果可以改了代码不重新启动就好了,真是费劲。(真是年少无知,太热爱工作,这重启的时间摸鱼,多是一件美事啊!)后来自己发现,如果只改方法中的几行代码,IDEA重新编译后是可以直接生效的(也就是上图中的IDEA热加载)。如果是增加个类,或者多写个方法,还是得老老实实的重启项目才行。

JRebel究竟有什么奇效?

IDEA启动项目

我们写个简单的demo来看看JRebel的效果。

创建一个Spring的web项目,写一个简单的Controller,实现一个post请求:

@RestController
@Slf4j
public class TestJRebelController {@PostMapping("/test/hello")public String hello() {return "你好,欢迎常来看看";}
}

通过IDEA启动项目,本地请求后,正常返回

这时我们增加一个方法helloWorld(),如下:

@RestController
@Slf4j
public class TestJRebelController {@PostMapping("/test/hello")public String hello() {return "你好,欢迎常来看看";}@PostMapping("/test/helloworld")public String helloWorld() {return "你好,这个世界欢迎常来看看";}
}

然后在菜单栏选择Build–>Recompile ‘TestJRebelController.java’,弹出的窗口点击reload,这时左下角会提示新增方法的重新编译对VM是无效的,需要重新启动服务。当然,新的url请求自自然也是失效的。

JRebel启动项目

现在我们安装完JRebel,通过JRebel启动只有hello()方法的项目。之后我们再添加helloWorld()这个方法,按照刚才的方式重新编译,发现左下角提示“1 class reloaded”。

之后请求路径localhost:8080/test/helloworld成功返回。

鹅妹子嘤~完全是实时生效啊!

再试试新增一个类:

@RestController
@Slf4j
public class TestController {@PostMapping("/test2/helloworld")public String hello() {return "你好,第二个世界欢迎常来看看";}
}

这次我没有重新编译,直接请求localhost:8080/test2/helloworld,发现直接返回了信息。

为啥呢?原来是因为我的IDEA在这里配置了自动编译:

所以当你的代码有变化时,JRebel会自动重新加载最新的代码,所以不用你手动重新编译,就会实时生效啦。同时控制台会输出以下的信息:

2022-03-19 10:18:19 JRebel: Reloading class 'com.example.littleweb.controller.TestController'.

安装JRebel

安装插件的过程很简单。

1、IDEA插件市场搜索并安装

2、激活

重启IDEA后,根据首次安装指引,进入激活步骤。这里感谢薯条大佬搭建的激活服务器,直接访问https://jrebel.qekang.com,复制界面上展示的激活链接,填充到激活页面,然后随便填写一个邮箱名即可完成激活。

3、启动项目

之后用这个小绿火箭的图标来启动或者debug项目就可以啦。

好啦,这样,摸鱼的时间就又减少了。

人生苦短,我用JRebel相关推荐

  1. Jrebel 热部署插件的使用和破解

    生成GUIDS 的网站:https://www.guidgen.com/ Jrebel 介绍和破解说明:https://www.cnblogs.com/wang1024/p/7211194.html ...

  2. 华为 | 人生苦短,码短情长,有场大Party等你来Pick!

    上学时,书上说C语言是上帝的语言. 我同屋的兄弟不服,他说PHP才是最好的语言. 毕业之后,我们Team的老大却坚信:Life is short,只用Python-- 现在,作为一个真正的开发者,我发 ...

  3. go加载python_人生苦短我用python(02)动态加载模块-Go语言中文社区

    文章内容为原创,欢迎转载请注明出处 作者: EflyPro->晦明禅师 文章来源:公众号"睿江云计算" 继第一期[人生苦短我用Python系列专栏]发布后,深受广大睿普迷的一 ...

  4. python精品课_【人生苦短,我用Python】Python免费精品课连载(1)——Python入门

    摘要:课程学习:零基础入门学习Python - 阿里云大学 上图中T恤上印着"人生苦短,我用Python"的大牛就是Python的创始人Guido van Rossum.其实这句话 ...

  5. ecplise中插件Jrebel的安装

    今天下午搞了很长时间的jrebel,这个插件,可是就是不能使用,很烦,最后多亏蒋哥的帮助,原来在ecplise中的project-->Build automatically没有打开,所有即使我安 ...

  6. Eclipse 安装热部署JRebel

    开发环境 sts-3.7.2.RELEASE 安装步骤 1.打开应市场 2.搜索JRebel并进行下载 3.下载完成后点击JReble Configuation进入 转载于:https://www.c ...

  7. 人生苦短,我要换Go!

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 来源:ycombinator 编辑:QJP [导读]码农常说,「人生苦短,我用Pyho ...

  8. JRebel for Android 编译神器

    一.描述 在我们使用AndroidStudio编译的时候经常因为项目大,编译时长过久而抓狂,现在不用担心了,这款插件可以解决这个问题,大大提高编译的速度,甚至是秒级编译完成,不要急,下面开始介绍. 腾 ...

  9. 我在学python-你们以为我在学C++?其实我在学Python!人生苦短!

    你们以为我在学C++?其实我在学Python!人生苦短! 我会随便说,C++ 近年来开始"抄袭" Python 么?我只会说,我在用 C++ 来学习 Python. 不信?来跟着我 ...

最新文章

  1. Linux下tomcat的安装与卸载以及配置(超简单)
  2. 谷歌兄弟公司Wing将于10月开始试点无人机配送
  3. 错误时自动退出bash shell脚本[重复]
  4. Flash/Flex学习笔记(30):不用startDrag和stopDrag的对象拖动
  5. Spring Cloud构建微服务
  6. 详述WebLogic反序列化远程命令执行漏洞的处理过程,云和恩墨技术通讯精选
  7. The Linux Process Principle, PID、PGID、PPID、SID、TID、TTY
  8. 建立可视化决策平台,“数据化”首当其冲! 1
  9. 前端系列之HTML基础知识概述
  10. 学生选课系统 c语言
  11. 怎么把文本文档txt改成html,如何将Word文档转换成txt格式文本
  12. silabs 大话si4463两种数据传输模式
  13. 【论文】论文中的参考文献:国标GB/T 7714-2015文献类型与格式
  14. Javascript笔记大全01,会持续更新~
  15. PIPI1003: 最少钱币数c++
  16. 如何能做好软件项目(迭代开发)
  17. Android开机画面定制
  18. Android应用中捕捉所有点击事件实现
  19. svn安装完成check后无法commit错误信息,及相应的解决办法
  20. ElasticSearch根据坐标点和半径查询范围内的所有记录,并按距离排序

热门文章

  1. 极光推送C#版本在XP系统下提示“基础连接已经关闭: 接收时发生意外错误”的解决方案
  2. adobe AI 如何对文字,进行自动换行
  3. 52832Dongle的安装
  4. Kaggle实战入门:泰坦尼克号生还预测(基础版)
  5. 访问交流 | 成都经开区区长一行走访零数科技
  6. 软件工程师是做什么的呢
  7. 网络安全从业者可以考哪些证书?行业认可证书汇总!
  8. java家族的姓氏MainClass,名门修谱:互联网家谱,可以一个姓氏同修一本谱!
  9. mysql存储过参数拼接_mysql 存储过程动态拼接sql并执行赋值
  10. vue3+acro.design 遇到的问题点