什么是Spring Boot DevTools
官网:https://docs.spring.io/spring-boot/reference/using/devtools.html
Spring Boot DevTools 是一个用于提升 Spring Boot 应用开发效率的工具集。它提供了一些功能,使得开发过程更加便捷和高效,包括:
- 自动重启:当我们修改代码后,DevTools 会自动重启应用,不需要手动重新启动。
- 快速重载:除了重启,DevTools 还允许在某些情况下进行快速重载,使得更新更快。
- LiveReload:支持 LiveReload 功能,可以在文件变化时自动刷新浏览器。
- 配置优化:在开发环境下,自动配置一些开发所需的设置,例如禁用部分缓存。
什么是热部署和热加载
- 热部署(Hot Deployment):指的是在不停止应用程序的情况下,将新代码部署到正在运行的应用中。虽然传统的热部署有一定的复杂度和限制,但它的目标是尽可能减少停机时间。
- 热加载(Hot Reload):是热部署的一种实现,通常指在开发过程中对代码的修改能够立即反映到应用中,而无需重启应用。热加载主要用于前端开发和某些后端框架中,它更强调快速反馈和开发效率。
总结
Spring Boot DevTools 利用热部署和热加载等机制,极大地提高了开发者的工作效率,减少了等待时间,让开发过程更加顺畅。
配置devtools实现热部署
POM配置
添加spring-boot-devtools的依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional> <!-- 可以防止将devtools依赖传递到其他模块中 -->
</dependency>
</dependencies>
Maven:https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-devtools
在使用 IntelliJ IDEA 开发 Spring Boot 应用时,可以通过以下两种方式配置和使用 Spring Boot DevTools 进行热部署和自动重启:
方式一:手动触发重启
手动编译:可以通过快捷键 Ctrl + F9 进行手动编译,或者使用 Maven 命令 mvn compile 来触发应用的重启。
方式二:自动重启更新设置
- 开启自动构建:进入菜单 File -> Settings -> Build, Execution, Deployment -> Compiler,勾选 Make project automatically。
- 注册表设置:使用快捷键 Ctrl + Alt + Shift + /,选择 Registry,勾选 compiler.automake.allow.when.app.running。
- 新版本设置:在新版本的 IDEA 中,可以在 File -> Settings -> Advanced Settings 中找到相应设置。
application.yml 配置
spring:
devtools:
restart:
enabled: true # 开启热部署
additional-paths: src/main/java # 指定重启监控目录
exclude: WEB-INF/** # 排除特定目录
thymeleaf:
cache: false # 关闭 Thymeleaf 模板引擎缓存
使用 LiveReload
- Spring Boot DevTools 包含嵌入式 LiveReload 服务器,可以在资源更改时自动刷新浏览器。
- 可从 livereload.com 下载 LiveReload 浏览器扩展,支持 Chrome、Firefox 和 Safari。
- 如果不想运行 LiveReload 服务器,可以将 spring.devtools.livereload.enabled 属性设置为 false。注意,只有一个 LiveReload 服务器可以同时运行。
注意事项
- 在启动应用程序之前,请确保没有其他 LiveReload 服务器正在运行。
- 如果从 IDE 启动多个应用程序,只有第一个应用程序会支持 LiveReload。