• 人生苦短,我用JRebel


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

    img

    团子表示我们的插件要比同类插件优秀哦。不过我定睛一看,好家伙,第一列的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启动项目,本地请求后,正常返回

    img

    这时我们增加一个方法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请求自自然也是失效的。

    img

    JRebel启动项目

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

    img

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

    img

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

    再试试新增一个类:

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

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

    img

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

    img

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

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

    安装JRebel

    安装插件的过程很简单。

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

    img

    2、激活

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

    img

    img

    3、启动项目

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

    img

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

  • 相关阅读:
    计算机毕业设计 基于HTML+CSS+JavaScript响应式网站健身7页,适配手机端,响应式页面,页面精美,使用bootstrap 框架
    【前端知识】Node——events模块的相关方法
    vue可展开/收缩搜索条件且支持自适应功能
    【C++编程能力提升】
    刷题记录:牛客NC15447wyh的问题
    【luogu CF1609G】A Stroll Around the Matrix(贪心)(线段树)
    云原生系列 【基于CCE Kubernetes编排实战二】
    Vue —— 进阶脚手架(六)(过渡与动画)
    【Camera基础(二)】摄像头驱动原理和开发&&V4L2子系统驱动架构
    STM32 NVIC中断优先级管理通过结构图快速理解
  • 原文地址:https://www.cnblogs.com/codeflyer/p/16026362.html