热重载 beta
无需重启应用即可让编写的代码生效,支持类(包括代理类)的属性和方法变动、SpringBoot、MybatisPlus等,提升开发效率。
开启热重载
点击 图标变为
表示开启热重载,大飞机模式下启动项目热重载即可生效。
- 关闭状态
- 开启状态
启动项目如果提示 DCEVM is not installed
,检查命令 java -XXaltjvm=dcevm -version
是否能正常输出。如果不能则需要先安装 DCEVM。
使用热重载
在大飞机的状态下启动项目,项目输出如下日志,并打印载入的热重载插件。
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
方式启动项目可以通过如下方式编译项目触发热重载
Debug
方式启动项目不但可以通过上面 Run 的方式编译项目触发热重载,还可以通过右键菜单的Compile and Reload Modified Files
方式重新编译 class 触发热重载.
Xml
文件可以也可以通过上面 Run 的方式编译项目触发热重载,还可以通过右键菜单的Compile 'xxx.xml' to Target
方式单独触发热重载.
控制台会输出相关热重载的信息。
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 -jar DCEVM-8uXX-installer.jar
文件,找到对应的版本,点击 Install DCEVM as altjvm
按钮即可。
linux
如输入 java -XXaltjvm=dcevm -version
输入如下提示
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 version | download by debug tools | download by github |
---|---|---|
>= 1.8.0_181 | libjvm181.so | libjvm181.so |
1.8.0_172 | libjvm172.so | libjvm172.so |
1.8.0_152 | libjvm152.so | libjvm152.so |
1.8.0_144 | libjvm144.so | libjvm144.so |
1.8.0_112 | libjvm112.so | libjvm112.so |
1.8.0_92 | libjvm92.so | libjvm92.so |
1.8.0_74 | libjvm74.so | libjvm74.so |
<= 1.8.0_66 | libjvm66.so | libjvm66.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目录