Idea 中使用 JRebel 实现 SpringBoot 热部署

本贴最后更新于 1700 天前,其中的信息可能已经时移世改

在 SpringBoot 开发过程中,当 Debug 项目时,修改代码逻辑、修改接口路由、新增工具类等等情况下,一般都需要重新启动项目。通过配置 JRebel 可实现热部署,保存代码后自动编译新文件,并通过 JRebel 自动 Reload,从而实现快捷开发。

SpringBoot 实现热部署方式

SpringBoot 已经提供了实现热部署的方法,你只需要引入依赖 springboot-devtools 就可以了 。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
</dependency>

添加 spring-boot-devtools 之后就可以实现热部署了,那为什么我们还需要 JRebel 呢?

  • 1、 springboot-devtools 方式的热部署在功能上有限制,方法内的修改可以实现热部署,但新增的方法或者修改方法参数之后热部署是不生效的;
  • 2、相对于 JRebel, springboot-devtools 方式热部署的速度可能有点慢,影响效率。

安装激活 JRebel

Settings → Plugins → 搜索 JRebel,然后安装,安装后重启 Idea,或者参见官方安装教程 IntelliJ IDEA – JRebel manual

image.png

安装完成后进入 Help → JRebel → Activation 激活,具体激活请参见我以前的一篇文章 自建内网可用 JRebel 激活服务器
如果您不想自己搭建,也可以直接打开 http://niuniu.hicp.net/jrebel/ 复制一个地址进行激活。

image.png

配置 Idea 打开自动编译

进入设置 Settings → Build, Execution, Deployment → Compiler,然后勾选 Build project automatically

20200326103542.jpg

由于 Build project automatically 选项仅在

Idea 主界面快捷键 ctrl+shift+alt+/,选择 Registry...,然后找到 compiler.automake.allow.when.app.running 并勾选,此时已经生效,修改代码后 ctrl+s 会自动重新编译,编译完成后 JRebel 也会自动加载新的文件。

image.png

配置项目启动

首先启动项目请使用 JRebel 按钮启动。

20200326104713.jpg

另外:On 'Update' action: 表示按 ctrl+F10 更新项目时激活的操作;On frame deactivation: 表示切换到其它窗口后 Idea 是否启动相应操作,选择 Update classes and resources 表示离开 Idea 后会启动编译新文件

image.png

结论

Idea 确实好用,刚从 Eclipse 转过来,开始学习各种快捷键,各种 Idea 新知识,加油!

参见:基于 SpringBoot & IDEA & JRebel 玩转远程热部署与远程调试

  • IDEA

    IDEA 全称 IntelliJ IDEA,是一款 Java 语言开发的集成环境,在业界被公认为最好的 Java 开发工具之一。IDEA 是 JetBrains 公司的产品,这家公司总部位于捷克共和国的首都布拉格,开发人员以严谨著称的东欧程序员为主。

    180 引用 • 400 回帖
  • JRebel

    JRebel 是一款 Java 虚拟机插件,它使得 Java 程序员能在不进行重部署的情况下,即时看到代码的改变对一个应用程序带来的影响。

    26 引用 • 78 回帖 • 664 关注
  • Spring

    Spring 是一个开源框架,是于 2003 年兴起的一个轻量级的 Java 开发框架,由 Rod Johnson 在其著作《Expert One-On-One J2EE Development and Design》中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 JavaEE 应用程序开发提供集成的框架。

    944 引用 • 1459 回帖 • 18 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • 很棒!学习了doge ,我用的是破解的。毕竟两千多不是一个小数目

  • zxniuniu

    最近发现,jrebel 热部署经常不生效,还没找到原因 😁😂