一文詳解springboot中的熱啟動(dòng)配置方案
Spring Boot 的熱啟動(dòng)(熱部署)主要通過 **`spring-boot-devtools`** 模塊實(shí)現(xiàn),它能在代碼修改后自動(dòng)重啟應(yīng)用(無(wú)需手動(dòng)停止再啟動(dòng)),大幅提升開發(fā)效率。以下是詳細(xì)配置和使用指南:
一、核心機(jī)制
spring-boot-devtools 通過兩階段實(shí)現(xiàn)熱更新:
1.自動(dòng)重啟(Restart):檢測(cè)到 classpath 下的文件變動(dòng)(如 Java 類、配置文件)→ 觸發(fā)應(yīng)用重啟(速度比冷啟動(dòng)快)。
2.實(shí)時(shí)重載(LiveReload):配合瀏覽器插件,靜態(tài)資源(HTML/CSS/JS)修改后自動(dòng)刷新頁(yè)面。
二、快速配置(3步)
1. 添加依賴
<!-- Maven pom.xml -->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional> <!-- 避免依賴傳遞 -->
</dependency>
</dependencies>
// Gradle build.gradle
dependencies {
developmentOnly 'org.springframework.boot:spring-boot-devtools'
}
2. 開啟 IDEA 自動(dòng)編譯
設(shè)置路徑:Settings > Build, Execution, Deployment > Compiler
勾選 Build project automatically
啟用運(yùn)行時(shí)編譯 (關(guān)鍵步驟!):Ctrl + Shift + A 搜索 Registry → 勾選:
compiler.automake.allow.when.app.running
3. 修改配置(可選)
# application.yml
spring:
devtools:
restart:
enabled: true # 默認(rèn)true,可關(guān)閉
trigger-file: .trigger # 用此文件觸發(fā)重啟(避免頻繁保存觸發(fā))
exclude: static/** # 排除無(wú)需監(jiān)控的目錄
三、使用技巧
靜態(tài)資源熱更新(無(wú)需重啟)
- 前端文件位置:
src/main/resources/static或public - 瀏覽器安裝插件:LiveReload
- 修改 CSS/JS/HTML 后 → 自動(dòng)刷新頁(yè)面
跳過指定文件重啟
// 在代碼中排除觸發(fā)重啟
@SpringBootApplication
public class App {
public static void main(String[] args) {
System.setProperty("spring.devtools.restart.exclude", "templates/**");
SpringApplication.run(App.class, args);
}
}
手動(dòng)觸發(fā)重啟
在項(xiàng)目中創(chuàng)建 src/main/resources/.trigger 文件(文件名與配置一致),修改該文件觸發(fā)重啟。
四、常見問題解決
修改 Java 代碼后未重啟
- 檢查是否關(guān)閉了 IDEA 的
Build project automatically - 確認(rèn)
Registry中的compiler.automake.allow.when.app.running已啟用 - 嘗試手動(dòng) Build:
Build > Build Project(Ctrl+F9)
靜態(tài)資源修改未刷新
- 檢查是否使用了
src/main/webapp目錄(不推薦) → 改用static或public - 瀏覽器禁用緩存:開發(fā)者工具 → Network → ? Disable cache
熱部署失效(多模塊項(xiàng)目)
在子模塊的 pom.xml 中添加:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludeDevtools>false</excludeDevtools>
</configuration>
</plugin>
</plugins>
</build>
五、高級(jí)方案:JRebel(付費(fèi))
若需 無(wú)重啟熱更新(直接替換內(nèi)存中的類),推薦 JRebel:
- 安裝 IDEA 插件:
JRebel and XRebel - 激活(可試用14天)
- 啟動(dòng)項(xiàng)目時(shí)選擇
Debug with JRebel
優(yōu)勢(shì):修改 Java 代碼后無(wú)需重啟應(yīng)用,實(shí)時(shí)生效(對(duì)大型項(xiàng)目提速顯著)。
六、熱啟動(dòng)原理圖
mermaid代碼導(dǎo)出svg

生產(chǎn)環(huán)境警告:務(wù)必移除 spring-boot-devtools 依賴(通過 <scope>provided</scope> 或 developmentOnly),避免安全風(fēng)險(xiǎn)!
到此這篇關(guān)于一文詳解springboot中的熱啟動(dòng)配置方案的文章就介紹到這了,更多相關(guān)springboot熱啟動(dòng)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
IDEA配置并運(yùn)行Scala項(xiàng)目的實(shí)現(xiàn)步驟
本文主要介紹了IDEA配置并運(yùn)行Scala項(xiàng)目的實(shí)現(xiàn)步驟,文中通過圖文示例介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2025-06-06
關(guān)于BindingResult的使用總結(jié)及注意事項(xiàng)
Java?Swing實(shí)現(xiàn)QQ登錄頁(yè)面
spring aop實(shí)現(xiàn)接口超時(shí)處理組件的代碼詳解

