Spring Boot 热部署详解:从 Tomcat 配置到 Spring Boot 专属方案
热部署(Hot Deployment)是指在应用不停止运行的前提下,自动或手动加载修改后的代码 / 资源,避免频繁重启应用,大幅提升开发效率。传统 Tomcat 热部署需手动配置,而 Spring Boot 提供了更简洁的专属方案(spring-boot-devtools、springloaded)。从 “传统 Tomcat 热部署配置→Spring Boot 热部署方案→原理与注意事项” 三个维度,系统讲解热部署的实现方法与最佳实践,帮你高效开发 Spring Boot 应用。
热部署 vs 热加载:概念辨析
在讲解具体方案前,需先明确 “热部署” 与 “热加载” 的区别(避免混淆):
| 特性 | 热部署(Hot Deployment) | 热加载(Hot Swapping) |
|---|---|---|
| 核心原理 | 重新部署整个应用(销毁旧的 ClassLoader,创建新的) | 仅替换修改的类 / 资源(不销毁整个 ClassLoader) |
| 适用范围 | 所有代码 / 资源修改(包括配置文件、依赖) | 仅支持类文件修改(不支持配置文件、依赖变更) |
| 性能 | 耗时较长(需重启应用上下文) | 耗时极短(仅加载修改的类) |
| 实现工具 | Tomcat 配置、Spring Boot DevTools(部分场景) | JRebel、Spring Loaded、JVM HotSwap |
本文中 “热部署” 为广义概念,包含上述两种场景,重点讲解 Spring Boot 开发中常用的高效方案。
传统 Tomcat 热部署配置(非 Spring Boot 专属)
若需在外置 Tomcat(非 Spring Boot 内置容器)中实现热部署,需通过配置 Tomcat 关联项目,核心是开启 reloadable="true"(自动检测项目变更并重启)。三种方式本质是 “项目与 Tomcat 的关联方式”,具体如下:
方式一:直接将项目放入 Tomcat 的 webapps 目录
这是最简单的方式,无需额外配置,适合快速测试: