在pom.xml文件中添加如下依赖:
Spring Boot包含一组额外的工具,这些工具可以使应用程序开发体验更加愉快。 spring-boot-devtools模块可以包含在任何项目中,以提供开发时所需要的功能。如果要开启devtools支持,请将模块依赖项添加到您的构建中,如以下Maven清单所示:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
热部署触发的时间:
- 当classpath上的文件更改时
当DevTools监视类路径资源时,触发重启的唯一方法是更新类路径。导致类路径更新的方式取决于您使用的IDE。在Eclipse中,保存修改后的文件将导致类路径被更新并触发重新启动。在IntelliJ IDEA中,构建项目(Build +→+ Build Project)具有相同的效果。
- IDEA中代码更新时不会马上重新编译所以也就不会出发热部署,可以使用
ctrl+F9
重新编译,或者设置下面两步:
- File-Settings-Compiler-Build Project automatically;
- ctrl + shift + alt + / ,选择Registry,勾上 Compiler autoMake allow when app running
设置完成后当修改了代码,IDE失去窗口焦点时就会触发重新编译
热部署原理:
Spring Boot提供的重启技术通过使用两个类加载器来工作。不变的类(例如,来自第三方jar的类)将被加载到基本类加载器(base classloader)中。正在进行开发的代码将被加载到restart classloader中,热部署重启只会重新加载restart classloader,所以热部署重新加载比冷启动快得多
热部署监视资源的排除:
默认情况下,整个类路径下的资源(除了/META-INF/maven, /META-INF/resources, /resources, /static, /public, or /templates
)都是被热部署监视的资源,可以通过在配置文件中配置spring.devtools.restart.exclude=路径
来排除监视资源
如果要保留默认值并添加其他排除项,请改用spring.devtools.restart.additional-exclude属性。