对于比较大的项目,启动往往会比较慢,所以我们希望在开发过程中修改完代码后可以不用重启就可以让我们修改的代码生效。要想在不重启的情况下使修改的代码生效,目前我所知道的是有三种方式:idea debug方式启动、idea中安装jrebel插件以及使用spring-boot-devtools方式。spring-boot-devtools平时不怎么用,这里不做讨论,这里只研究另外两种方式。
由于这两种方式的演示用视频比较好,所以我录制了一个视频,有兴趣的可以看一下,有不足的地方欢迎大家批评指正。本文只是做一个总结。
演示视频 https://www.bilibili.com/video/BV1L64y1i7dS/
idea debug模式启动
这种方式是可以实现修改代码不重启生效,但是功能非常弱,使用场景也就很有限。什么情况下才会生效,下面表格做了总结。由于情况比较多,比较复杂,看不明白的建议先看视频。
| 修改的代码 | 不重启是否可以生效 |
| 方法中修改代码(修改的代码不涉及调用新增方法或类) | 是 |
| 添加新方法 | 否 |
| 修改方法签名 | 否 |
| 添加新类 | 是 |
| 添加新类生效后,再添加新方法 | 否 |
| 类中添加新属性 | 否 |
| 修改类中public属性的值 | 是 |
| 修改类中public属性的名 | 否 |
| 添加第一个static属性 | 是 |
| 添加第二个及更多static属性 | 否 |
| 添加第一个static方法 | 是 |
| 添加第二个及更多static方法 | 否 |
| 修改static方法签名 | 否 |
jrebel插件方式
这种方式就比较强大了,基本上不论是增删改了类中的方法或是属性,都可以实现不重启热部署。jrebel插件的安装与基本使用我在视频中就已经讲解了,这里就不细说了。
本文探讨了在Java开发中避免重启即可让修改代码生效的两种方法:IDEA的Debug模式和JRebel插件。Debug模式在特定条件下支持代码修改生效,如修改非方法签名的方法代码、添加新类等,但对新增方法或修改类结构的支持有限。而JRebel插件则能更全面地实现热部署,包括修改类结构、添加或修改方法和属性。对于需要频繁调试的开发者,JRebel提供了一种强大的解决方案。
1025





