spring-boot-devtools 热部署

一、简单介绍

  spring-boot-devtools是一个为开发者服务的一个模块,其中最重要的功能就是修改代码后自动启动springboot服务,速度比手动停止后再启动要快,节省出来的并不是手工操作的时间。

二、原理

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

三、配置使用

1.添加maven配置

 

2.添加启动插件

pom文件添加插件启动配置,如果没有fork配置,devtools不起作用,即项目修改后不会重新启动

 

3.设置项目自动编译

setting->Build,Execution,Deployment->Compiler找到 Build Project Automatically 
这个选项再Eclipse是默认勾选的,而IDEA要手动勾选。 

 

4.选择登记

然后找个地方ctrl+shift+alt+/ 调出Maintenance(维护)控制台,选择Registry(登记) 

勾选运行时自动编译(compiler.automak.allow.when.app.running) 

 5.验证

当修改完毕代码保存后,使用的加载器就变为了 restartedMain 了,说明热部署已经成功。

 

四、其他

  devtools可以实现页面热部署(即页面修改后会立即生效)

      这个可以直接在application.properties文件中配置spring.thymeleaf.cache=false来实现

 

原文地址:https://www.cnblogs.com/yaozhixiang/p/10583897.html