目录
一、简介
1、DevTools是什么,为什么要使用?
Spring Boot DevTools是一个开发工具,旨在提高开发人员的开发体验。它提供了一系列功能,如自动重启、热部署、远程调试等,以帮助开发人员更快地开发和调试应用程序。
DevTools的原理主要是通过监控classpath下的文件变化,来实现自动重启和热部署功能。当检测到文件发生变化时,DevTools会重新加载应用程序的上下文,从而使新的代码变化生效。
DevTools的主要目标是加快开发人员的开发速度,使他们能够更快地反馈和验证代码变更。除了文件监控功能外,DevTools还提供了一些其他功能,如远程调试、禁用模板缓存、禁用缓存等,以提高开发效率和调试能力。
2、监控的方式
-
文件系统监听:DevTools使用底层操作系统的文件系统监听功能来监控文件的变化。当文件发生变化时,DevTools会触发应用程序的重启。
-
类加载器:DevTools会创建一个额外的类加载器,用于加载classpath下的类文件。当检测到类文件发生变化时,DevTools会丢弃旧的类加载器,创建一个新的类加载器来加载最新的类文件,从而实现热部署功能。
-
轮询检测(Polling):对于不支持文件系统监听器的操作系统,如Windows,DevTools会使用轮询机制来检测文件的变化。它会定期扫描classpath下的文件,比较文件的最后修改时间,如果发现有文件发生变化,则会触发应用程序的重启。
-
触发器文件(Trigger file):DevTools还支持使用触发器文件来触发应用程序的重启。开发人员可以在项目的根目录下创建一个名为
.trigger
的空文件,当该文件被创建、修改或删除时,DevTools会触发应用程序的重启。
二、配置DevTools
1、pom.xml
<!-- 添加 Spring Boot DevTools 依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<!-- 作用范围为运行时 -->
<scope>runtime</scope>
<!-- 设置为可选依赖,不会被强制引入 -->
<optional>true</optional>
</dependency>
2、application.yml
# 是否开启DevTools自动重启功能,默认为true
spring.devtools.restart.enabled=true
# 配置触发重启的文件路径,多个路径使用逗号分隔,默认为src/main/java,src/main/resources
spring.devtools.restart.additional-paths=src/main/java,src/main/resources
# 配置触发重启的文件扩展名,默认为.trigger
spring.devtools.restart.trigger-file=.trigger
# 配置重启时需要排除的文件路径,多个路径使用逗号分隔,默认为META-INF/maven, META-INF/resources, resources, static, public, templates
spring.devtools.restart.exclude=WEB-INF/**,META-INF/**,resources/**,static/**,public/**,templates/**
3、 IDEA中开启自动编译的配置
打开Idea注册表 Shift + Ctrl + Alt + /,勾选配置。
ps:如果idea中没有compiler.automake.allw.when.app.running选项就不需要理会。
最后建议重启Idea,进行测试。