Skip to content

热重载 beta

无需重启应用即可让编写的代码生效,支持类(包括代理类)的属性和方法变动、SpringBoot、MybatisPlus等,提升开发效率。

开启热重载

点击 图标变为 表示开启热重载,大飞机模式下启动项目热重载即可生效。

  • 关闭状态

hotswap_off

  • 开启状态

hotswap_on

启动项目如果提示 DCEVM is not installed ,检查命令 java -XXaltjvm=dcevm -version 是否能正常输出。如果不能则需要先安装 DCEVM

dcevm_not_install.png

使用热重载

在大飞机的状态下启动项目,项目输出如下日志,并打印载入的热重载插件。

text
DebugTools: 2025-01-07 16:41:07.909    INFO [main] i.g.f.d.t.h.c.HotswapAgent 44 : open hot reload unlimited runtime class redefinition.{3.3.0}
DebugTools: 2025-01-07 16:41:08.498    INFO [main] i.g.f.d.t.h.c.c.PluginRegistry 132 : Discovered plugins: [JdkPlugin, ClassInitPlugin, AnonymousClassPatch, WatchResources, HotSwapper, Proxy, Spring, MyBatis]

编写代码后通过 idea 编译项目后自动触发热重载(idea快捷键自己探索)。

  • Run 方式启动项目可以通过如下方式编译项目触发热重载

build_project.png

  • Debug 方式启动项目不但可以通过上面 Run 的方式编译项目触发热重载,还可以通过右键菜单的 Compile and Reload Modified Files 方式重新编译 class 触发热重载.

compile_reload_file.png

  • Xml 文件可以也可以通过上面 Run 的方式编译项目触发热重载,还可以通过右键菜单的 Compile 'xxx.xml' to Target 方式单独触发热重载.

compile_xml.png

控制台会输出相关热重载的信息。

text
DebugTools: 2025-01-07 16:50:22.205  RELOAD [Thread-26] i.g.f.d.t.h.c.p.s.s.ClassPathBeanDefinitionScannerAgent 210 : Registered Spring bean 'testController'

哪些情况可以热重载

普通的class文件

  • 新增类文件
  • 存在的类 增加/修改 类中的 属性/方法/内部类
  • 匿名内部类
  • 枚举类

详细点击 class文件热重载 查看

代理类

  • java JDK 代理类。
  • Cglib 代理类。

详细点击 代理类热重载 查看

SpringBoot Bean

  • Controller
  • Service
  • Component
  • Repository

详细点击 SpringBoot 查看

MyBatis

  • Mapper(新增/修改)
  • Xml(新增/修改)

注意

MyBatis 目前支持在 Spring 环境下,其他情况未知。

详细点击 MyBatis 查看

MyBatisPlus

  • Entity(新增/修改)
  • Mapper(新增/修改)
  • Xml(新增/修改)

注意

MyBatisPlus 目前支持在 Spring 环境下,其他情况未知。

详细点击 MyBatisPlus 查看

安装 DCEVM

java 8

window/mac

下载对应版本的 .jar 文件。目前只支持下面版本的JDK,请选择对应版本的。

java versiondownload by debug toolsdownload by github
1.8.0_181DCEVM-8u181-installer.jarDCEVM-8u181-installer.jar
1.8.0_172DCEVM-8u172-installer.jarDCEVM-8u172-installer.jar
1.8.0_152DCEVM-8u152-installer.jarDCEVM-8u152-installer.jar
1.8.0_144DCEVM-8u144-installer.jarDCEVM-8u144-installer.jar
1.8.0_112DCEVM-8u112-installer.jarDCEVM-8u112-installer.jar
1.8.0_92DCEVM-8u92-installer.jarDCEVM-8u92-installer.jar
1.8.0_74DCEVM-8u74-installer.jarDCEVM-8u74-installer.jar
1.8.0_66DCEVM-8u66-installer.jarDCEVM-8u66-installer.jar
1.8.0_51DCEVM-8u51-installer.jarDCEVM-8u51-installer.jar
1.8.0_45DCEVM-8u45-installer.jarDCEVM-8u45-installer.jar

运行对应的 java -jar DCEVM-8uXX-installer.jar 文件,找到对应的版本,点击 Install DCEVM as altjvm 按钮即可。

dcevm-installer.png

linux

如输入 java -XXaltjvm=dcevm -version 输入如下提示

text
Error: missing `dcevm' JVM at `/home/java/jdk1.8.0_291/jre/lib/amd64/dcevm/libjvm.so'.
Please install or use the JRE or JDK that contains these missing components.

下载对应版本的文件并改名为 libjvm.so 到上面提取的目录下即可。

java versiondownload by debug toolsdownload by github
>= 1.8.0_181libjvm181.solibjvm181.so
1.8.0_172libjvm172.solibjvm172.so
1.8.0_152libjvm152.solibjvm152.so
1.8.0_144libjvm144.solibjvm144.so
1.8.0_112libjvm112.solibjvm112.so
1.8.0_92libjvm92.solibjvm92.so
1.8.0_74libjvm74.solibjvm74.so
<= 1.8.0_66libjvm66.solibjvm66.so

java 11

下载 trava-jdk-11-dcevm 作为jdk11使用。

java 17/21

下载 JetBrainsRuntime 作为jdk17/21使用。

TIP

苹果系统如果下载JDK后提示已损坏或无法验证开发者等原因不能启动JDK,输入 sudo xattr -r -d com.apple.quarantine /$jdkPath 即可, $jdkPath 是你的jdk目录