SpringBoot热部署环境配置与测试

什么是热部署?

热部署,就是我们在项目正在运行的时候进行了项目改造升级(增加业务),却不需要重新启动项目。

大家都知道在项目开发过程中,常常会改动页面数据或者修改数据结构,为了显示改动效果,往往需 要重启应用查看改变效果,其实就是重新编译生成了新的 Class 文件,这个文件里记录着和代码等对应 的各种信息,然后 Class 文件将被虚拟机的 ClassLoader 加载。

而热部署正是利用了这个特点,它监听到如果有 Class 文件改动了,就会创建一个新的ClaassLoader 进行加载该文件,经过一系列的过程,最终将结果呈现在我们眼前,Spring Boot通过配 置DevTools 工具来达到热部署效果。

在原理上是使用了两个ClassLoader,一个Classloader加载那些不会改变的类(第三方Jar包),另 一个ClassLoader加载会更改的类,称为restart ClassLoader,这样在有代码更改的时候,原来的restart ClassLoader 被丢弃,重新创建一个restart ClassLoader,由于需要加载的类相比较少,所以实现了较 快的重启时间。

配置步骤:

1、修改 Pom 文件,添加 DevTools 依赖

<!-- DevTools 的坐标 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><!--当前这个项目被继承之后,这个不向下传递--><optional>true</optional></dependency>

2、修改 Pom 文件,在plugin中添加devtools生效标志

<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><fork>true</fork><!-- 如果没有该配置,热部署的devtools不生效 --></configuration></plugin></plugins></build>

3、配置application.yml文件

spring:## 热部署配置devtools:restart:    # 开启热部署功能enabled: true      # 设置热部署要监听的目录additional-paths: src/main/java      # 解决项目自动重新编译后接口报404的问题poll-interval: 3000quiet-period: 1000

4、配置idea

第一、修改Compiler

第二、修改Registry

第一步:

第二步:

第三步:

5、测试:

1、先启动项目 2、然后在controller里面添加一段代码

@RequestMapping("/test")public String test( ){return "热部署成功了";}

3、不需要重启项目,直接访问请求这个路径,如果页面能正常返回热部署成功了,就证明热部署功能配置完成了。

经验分享 程序员 微信小程序 职场和发展