介绍
何为热部署(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>