添加maven依赖

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>

IDEA配置修改

ctrl + shift + s (keymap: Main menu -> File -> Settings…)

​Settings -> Build,Execution,Deployment -> Compiler -> 勾选 Build project automatically​

ctrl + Alt + shift + / (keymap: Other -> Maintenance)

​1. Registry... -> 勾选 compiler.automake.allow.when.app.running​

 

这里大概说一下我对DevTools实现热部署的理解。DevTools会监听classpath下的文件变动,并且会在保存文件时立即重启应用。因为采用的是虚拟机机制,所以重启很快。其实类加载器有​​base classloader​​​和​​restart classloader​​,前者加载不改变的class,例如第三方的jar包,后者主要加载正在开发的class。之所以重启很快,是因为重启的时候只是加载了在开发的class,没有重新加载第三方的jar包。