在 Cursor(基于 VS Code)中调试 Spring Boot 时,每次改代码都要手动重启应用,开发效率较低。本文介绍如何配置热部署,实现修改 Java 代码后自动重启,无需手动操作。

| 方案 | 原理 | 适用场景 |
|---|---|---|
| Spring Boot DevTools | 监听 classpath 变化,自动重启应用 | 任意代码修改(推荐) |
| Hot Code Replace (HCR) | JVM 调试器热替换方法体 | 仅修改方法体 |
| 自动编译 | 保存时自动编译 | 配合 DevTools 使用 |
推荐组合:DevTools + 自动编译,实现「保存即热重启」。
在 pom.xml 中加入:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
runtime:仅运行时生效,打包时不会打进生产环境optional:不向依赖本项目的模块传递在 application.yml 或 application-dev.yml 中:
spring:
devtools:
restart:
enabled: true
# 排除不需要触发热重启的路径,减少无效重启
exclude: static/**,public/**,templates/**
适合小范围逻辑调整,不适合结构性修改。
安装 Extension Pack for Java(包含 Java 语言支持、调试、Maven 等)。
在 .vscode/settings.json 中:
{
"java.compile.nullAnalysis.mode": "automatic",
"java.autobuild.enabled": true
}
java.autobuild.enabled:保存时自动编译,配合 DevTools 实现热重启在 .vscode/launch.json 中:
{
"version": "0.2.0",
"configurations": [
{
"type": "java",
"name": "Spring Boot (Debug + 热部署)",
"request": "launch",
"mainClass": "com.example.YourApplication",
"projectName": "your-project-name"
}
]
}
将 mainClass 和 projectName 替换为你的主类和 Maven 模块名。
spring-boot-devtools 已加入依赖spring.devtools.restart.enabled 为 truejava.autobuild.enabledexclude,减少不必要的重启optional,不会传递到依赖方spring.devtools.restart.enabled=false通过 Spring Boot DevTools + Cursor 自动编译 + 调试配置,可以在 Cursor 中实现:
适合日常开发,可明显提升调试和迭代效率。