1 什么是热部署?
热部署,就是在应⽤正在运⾏的时候升级软件(增加业务/修改bug),却不需要重新启动应⽤。
⼤家都知道在项⽬开发过程中,常常会改动⻚⾯数据或者修改数据结构,为了显示改动效果,往往需 要重启应⽤查看改变效果,其实就是重新编译⽣成了新的 Class ⽂件,这个⽂件⾥记录着和代码等对应 的各种信息,然后 Class ⽂件将被虚拟机的 ClassLoader 加载。
⽽热部署正是利⽤了这个特点,它监听到如果有 Class ⽂件改动了,就会创建⼀个新的 ClaassLoader 进⾏加载该⽂件,经过⼀系列的过程,最终将结果呈现在我们眼前,Spring Boot 通过配 置 DevTools ⼯具来达到热部署效果。
在原理上是使⽤了两个 ClassLoader,⼀个 ClassLoader 加载那些不会改变的类(第三⽅ Jar 包), 另⼀个ClassLoader 加载会更改的类,称为 restart ClassLoader,这样在有代码更改的时候,原来的 restart ClassLoader 被丢弃,重新创建⼀个 restart ClassLoader,由于需要加载的类相⽐较少,所以 实现了较快的重启时间。
2 热部署环境配置与测试
2.1 配置 DevTools 环境
修改 Pom ⽂件,添加 DevTools 依赖:
<!-- DevTools 的坐标 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<!--当前这个项⽬被继承之后,这个不向下传递-->
<optiona