介绍
何为热部署(hotswap)?
热部署是在不重启 Java 虚拟机的前提下,能自动侦测到 class 文件的变化,更新运行时 class 的行为。
Java 类是通过 Java 虚拟机加载的,某个类的 class 文件在被 classloader 加载后,会生成对应的 Class 对象,之后就可以创建该类的实例。默认的虚拟机行为只会在启动时加载类,如果后期有一个类需要更新的话,单纯替换编译的 class 文件,Java 虚拟机是不会更新正在运行的 class。
本质是JVM运行时字节码替换技术,使用到这种技术的组件还有像阿里巴巴开源的Java 代码诊断工具Arthas等。
热部署工具
在我们开发过程中,因为修改完代码后需要频繁地重启项目,严重拖慢了我们的开发速度。因此开发中经常使用 spring-boot-devtools 依赖开启热部署配置,进行项目的自动更新启动。其他实现热部署的方式还有 Jrebel 插件等,但因为是收费的,我们这里暂不考虑,只实践这种方式:
快速实践
1. 添加依赖配置
1、在pom.xml加入配置
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
</configuration>
</plugin>
2. 修改IDEA配置
在IDEA中打开File->Settings->Compiler配置项:

按ctrl + shift + alt + /然后选择Registry,勾上这个:


IDEA载入配置(run->Edit Configurations):

大功告成!当启动项目后,更改代码后,项目自动重启并且运行在最新的代码中即说明项目热部署配置成功。
注意事项
spring-boot-devtools 热部署并不能针对所有的修改进行更新,比如修改配置文件和一些其他的配置代码,因此热部署并不是万能的,并且频繁的重启也有利有弊。因此,这种技术的引入也是有代价的,大家权衡后再使用即可~
热部署允许开发者在不重启JVM的情况下更新代码,提高开发效率。本文介绍了Java热部署的基本原理,特别是通过Spring Boot DevTools实现热部署的步骤,包括在pom.xml中添加依赖和调整IDEA配置。尽管它不能处理所有类型的修改,但能显著加速开发过程。
4076

被折叠的 条评论
为什么被折叠?



