一、为什么需要热部署
Springboot 项目如果代码或者配置文件进行了修改,需要重新将项目关闭再重新启动,这样比较繁琐,并且如果项目比较大,重启的时间会比较长,那么怎么解决上述问题呢?通过热部署的方式让我们可以一边修改我们的项目,然后在页面中直接通过刷新展示出来.
spring 为开发者提供了一个名为 spring-boot-devtools 的模块来使 Springboot 应用支持热部署,提高开发者的开发效率,无需手动重启 Springboot 应用.
二、devtools 的原理
深层原理是使用了两个 ClassLoader,一个 Classloader 加载那些不会改变的类(第三方 Jar 包),另一个 ClassLoader 加载会更改的类,称为 restart ClassLoader ,这样在有代码更改的时候,原来的 restart ClassLoader 被丢弃,重新创建一个 restart ClassLoader ,由于需要加载的类相比较少,所以实现了较快的重启时间.
三、实现热部署步骤
1、pom.xml 中加入 spring-boot-devtools 依赖
// 添加 spring-boot-devtools 依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
2、添加插件
// 复制插件到 pom.xml 中,如果是父子工程添加到父工程中
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
<addResources>true</addResources>
</configuration>
</plugin>
</plugins>
</build>
3、设置 IDEA 自动编译: File---->Settings-Compiler---->勾选如下配置
4、快捷键 ctrl + shift + alt + /---->弹出对话框---->选择点击 Registry---->勾上 Compiler autoMake allow when app running
5、重启 IDEA