使用 spring-boot-devtools 进行热部署
- 一、热部署原理
- 二、集成Springboot步骤
- 2.1 步骤一
- 2.2 步骤二
- 2.3 步骤三
- 三、热部署无效原因排查
一、热部署原理
springloaded 并不能实现这些修改的热部署。spring-boot-devtools 是一个为开发者服务的模块,其中最重要的功能就是自动实现把更新的应用代码更改到最新的 APP 上。其工作原理是在发现代码有更改之后,自动重新启动应用,但是速度 比手动停止后再启动要更快。其深层原理是使用了两个 ClassLoader,一个 ClassLoader 加载那些不会改变的类(例如第三方的 Jar 包依赖),另一个 ClassLoader 加载会更改的类,称为 Restart ClassLoader。这样在有代码更改的时候,原来的 Restart ClassLoader 被丢弃,重新创建一个 Restart ClassLoader 加载更新的类,由于所需要加载的类相对而言比较少,所以实现了较快的重启。
二、集成Springboot步骤
2.1 步骤一
在项目的pom文件中添加 Web 开发的启动器配置。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
2.2 步骤二
在项目的pom文件中添加 spring-boot-devtools 的依赖配置
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
<scope>true</scope>
</dependency>
2.3 步骤三
注意,还需要加入 spring-boot-maven-plugin
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<!-- 如果没有该项配置,devtools不会起作用,即应用不会restart -->
<fork>true</fork>
</configuration>
</plugin>
</plugins>
</build>
三、热部署无效原因排查
开发中如果出现了 spring-boot-devtools 不能实现热部署,一般可能是以下几个原因中的一个引起的,可自行排查:
1、对应的 spring-boot 版本是否正确。本书中使用的是 2.0.0 版本。
2、是否加入了 plugin 以及属性 true>/fork>。
3、Eclipse Project 是否开启了 Build Automatically 自动编译的功能。
4、如果设置 SpringApplication.setRegisterShutDownHook(false),则自动重启将不再起作用。
本文完结!