背景
在Spring Boot項目中,修改一些簡單的代碼后,每次手動終止并啟動整個項目比較繁瑣且消耗時間。Spring Boot DevTools 提供了開發時的熱重啟功能,使得在開發過程中修改代碼后可以快速生效,而無需手動重啟整個應用,可以大幅減少重啟時間。
Spring Boot DevTools:這是Spring Boot提供的開發工具,它能夠監控類路徑上的變化,并自動重啟應用。但請注意,它并不是真正的熱部署(即不需要任何重啟),而是通過快速重啟(Restart)來加載更改。它使用兩個類加載器來實現快速重啟,對于靜態資源和模板文件的更改,只需要刷新瀏覽器即可看到變化。
配置步驟:
- 添加依賴到 pom.xml:
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional>
</dependency>
- 在 IDEA 中開啟自動編譯:
- 打開設置 → Build, Execution, Deployment → Compiler
- 勾選 “Build project automatically”
- 開啟 IDEA 的自動編譯支持:
- 按 Ctrl+Shift+Alt+/ (Windows) 或 Cmd+Shift+Option+/ (Mac)
- 選擇 “Registry”
- 勾選 “compiler.automake.allow.when.app.running”
注意:
新版 IntelliJ IDEA(2021.2 以后)里把compiler.automake.allow.when.app.running 這個選項從 Registry 移到了 Advanced Settings,所以當 Ctrl + Shift + Alt + / 打開 Registry 時搜不到就按一下做法:
(1)打開 Settings / Preferences
- Windows:File → Settings
- macOS:IntelliJ IDEA → Preferences
(2)左側菜單選擇 Advanced Settings(在最下面)
(3)在右側找到Allow auto-make to start even if developed application is currently running,把它勾上即可
- 應用配置
在 application.yml 或 application.properties 中:
spring:devtools:restart:enabled: true # 啟用熱重啟additional-exclude: static/** # 靜態資源更改不觸發重啟thymeleaf:cache: false # 禁用模板緩存
啟動一次應用
以后在 IDE 里 Ctrl+S 保存代碼,Devtools 會監聽 classpath 變化 → 自動重啟(Restart 是秒級,比冷啟動快很多)。
注意
? 靜態資源(html、css、js)默認不會觸發重啟,而是直接刷新瀏覽器。
? 如果改的是 application.yml 或 pom.xml,需要手動重啟。