代码配置(步骤一)
maven
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
</dependency>
yml
# Spring
spring:
devtools:
restart:
# 默认为true
enabled: true
IDEA配置(步骤二)
1. 开启Build project automatically
。步骤如下图:“文件”——“设置”——“构建,执行,部署”——“编译器”——勾选“Build project automatically”。
2. 使用快捷键:Ctrl + Alt + Shift + / 调出 Registry 窗口,勾选 compiler.automake.allow.when.app.running 选项。如下图:
热部署
监听到如果有Class文件改动了,就会创建一个新的ClaassLoader进行加载该文件,经过一系列的过程,最终将结果呈现在我们眼前。
DevTools
DevTools是Spring为开发者提供了一个名为spring-boot-devtools的模块,来使Spring Boot应用支持热部署,提高开发者的开发效率,无需手动重启Spring Boot应用。使用起来非常简单,只需要将下面的依赖引入项目里面就可以了。
重新启动 vs 重新加载
Spring Boot提供的重启技术通过使用两个类加载器来工作。
不改变的类(例如来自第三方jar的类)被加载到base classloader中。
我们正在开发的类会加载到restart classloader中。当应用程序重新启动时,restart classloader将被丢弃并创建一个新类。这种方法意味着应用程序重启通常比"cold starts"快得多,因为基类加载器已经可用并且已经被填充。