一、簡單介紹
spring-boot-devtools是一個為開發者服務的一個模塊,其中最重要的功能就是修改代碼后自動啟動springboot服務,速度比手動停止后再啟動要快,節省出來的並不是手工操作的時間。
二、原理
主要是使用了兩個ClassLoader,一個Classloader加載不會改變的類(第三方Jar包),另一個ClassLoader加載會更改的類,稱為 restart ClassLoader,這樣在有代碼更改的時候,原來的restartClassLoader 被丟棄,重新創建一個restartClassLoader,由於需要加載的類相比較少,所以實現了較快的重啟時間(5秒以內)。
三、配置使用
1.添加maven配置
2.添加啟動插件
pom文件添加插件啟動配置,如果沒有fork配置,devtools不起作用,即項目修改后不會重新啟動
3.設置項目自動編譯
在setting->Build,Execution,Deployment->Compiler找到 Build Project Automatically。
這個選項再Eclipse是默認勾選的,而IDEA要手動勾選。
4.選擇登記
然后找個地方ctrl+shift+alt+/ 調出Maintenance(維護)控制台,選擇Registry(登記)
勾選運行時自動編譯(compiler.automak.allow.when.app.running)
5.驗證
當修改完畢代碼保存后,使用的加載器就變為了 restartedMain 了,說明熱部署已經成功。
四、其他
devtools可以實現頁面熱部署(即頁面修改后會立即生效)
這個可以直接在application.properties文件中配置spring.thymeleaf.cache=false來實現