昨天看到团子推送的一篇关于热部署的文章,其中介绍了自研的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 Windows RegCreateKeyEx(...) returned error code 5.

    作为一个JRebel的深度用户,在win10下用JRebel的eclipse插件使用的时候遇到了如下问题: java.util.prefs.WindowsPreferences <init> ...

  2. IntelliJ IDEA - 热部署插件JRebel 安装使用教程

    IntelliJ IDEA - JRebel 安装使用教程 JRebel 能做什么? JRebel 是一款热部署插件.当你的 Java-web 项目在 tomcat 中 run/debug 的时候 , ...

  3. IDEA+Tomcat+JRebel热部署1

    所需资源下载: jrebel_6.4.2a  概述 JRebel是一个J2EE热部署的工具.使用它可以减少浪费8-18%的开发时间在项目的构建和部署上.之前只是听说过,一直没有实践,今天实际使用了一把 ...

  4. IDEA+Tomcat+JRebel热部署

    在完成idea工程简单应用后,接下来实现热部署. 简单应用地址:http://wibiline.iteye.com/admin/blogs/2072454 一.安装JRebel插件 1. 在线安装 F ...

  5. jrebel实现tomcat热部署

    -noverify -javaagent:D:\jrebel.jar 注:频繁切换工程的时候,热部署可能会失效; 解决办法是:先把项目拖到tomcat下发布,然后在没有配置上面这行代码的情况下,让项目 ...

  6. Intellij jrebel 热部署

    Intellij 14破解下载 注册机 即可进行破解.JRebel安装下载IntelliJ IDEA的 JRebel插件: jr-ide-idea-6.2.0-idea-13-14.zip. 打开In ...

  7. jrebel注意事项

    -Xms2048m -Xmx2048m -XX:MaxPermSize=4096m -noverify -javaagent:C:\Users\Administrator\.IntelliJIdea2 ...

  8. Jrebel是一套开发环境,用来实现热部署

    http://truemylife.iteye.com/blog/1140921 背景与愿景:开发环境下,tomcat对热布署的支持还不够全面,致使开发人员浪费大量时间在重起服务上.为了提高开发效率, ...

  9. Intellij IDEA + Jrebel

    Jrebel java热部署神器! 如果你没用过这里一句白话说明,就是在修改了class等源文件后无需重启web容器(如Tomcat)直接生效! 找到以后 安装... 然后 激活地址 :http:// ...

随机推荐

  1. IOS tableView 滑动删除与排序功能

    // // ViewController.m // 0429 // // Created by apple on 15/4/29. // Copyright (c) 2015年 gense. All ...

  2. 泛型、Junit

    一. 泛型 1.泛型的好处 **1)编译时,检查添加元素的类型,提高了安全2)减少了类西较换的次数,提高效率 不使用泛型Dog -> Object -> Dog //放入到ArrayLis ...

  3. 通过安装HomeBrew来安装Python3

    首先说什么是HomeBrew? 下面引用简书上一个博客的解释:(博客链接:http://www.jianshu.com/p/d229ac7fe77d) 为什么要使用Homebrew Mac OS X是 ...

  4. 36、python并发编程之多线程(操作篇)

    目录: 一 threading模块介绍 二 开启线程的两种方式 三 在一个进程下开启多个线程与在一个进程下开启多个子进程的区别 四 练习 五 线程相关的其他方法 六 守护线程 七 Python GIL ...

  5. Solution -「CF 908G」New Year and Original Order

    \(\mathcal{Description}\)   Link.   对于 \(x\in\mathbb N^*\),令 \(s(x)\) 表示将 \(x\) 十进制下的各位数码排序后得到的十进制数的 ...

  6. HMS Core积极探索基于硬件耳返的功能,帮助唱吧整体唱歌延迟率降低60%

    唱吧的使命是让唱歌更简单.让生活更美好,其布局的K歌业务专注于让曲库更全.音质更好,开创了同框合唱.弹唱等有意思的游戏类K歌玩法.为了让用户拥有更加沉浸的娱乐体验,唱吧与HMS Core积极探索基于硬 ...

  7. suse 12 二进制部署 Kubernetets 1.19.7 - 第07章 - 部署kube-controller-manager组件

    文章目录 1.7.部署kube-controller-manager 1.7.0.创建kube-controller-manager请求证书 1.7.1.生成kube-controller-manag ...

  8. c++ struct enum union加typedef与不加typedef

    struct/enum/union加typedef与不加typedef 匿名结构体 struct { int a; int b; } v; // 这里表示定义了一个结构体的变量v,且结构体类型没有名字 ...

  9. Dubbo源码剖析一之整体架构设计

    Dubbo基础二之架构及处理流程概述 - 池塘里洗澡的鸭子 - 博客园 (cnblogs.com)中进行Dubbo职能上的简单介绍,下面就其内部进行详细探究: 1.Dubbo调用关系 这个图是不是很熟 ...

  10. opencv安装实录附十几行C++实现的一个人脸识别demo

    前言: 之前写过一篇在nano上使用opencv,nano上默认是安装了opencv的库,除了nano,我们自己电脑上也想使用opencv做一些平时图像处理验证. 本来也是看一些资料安装好的,觉得也没 ...