聲明:本文參考自:https://blog.csdn.net/mylovewanzi/article/details/104059933
使用spring-boot-devtools的應用程序將在類路徑上的文件發生更改時自動重新啟動。
在pom.xml文件中加入一下依賴
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
這里多了一個optional,為true表示項目在打包的時候不會被打包進項目中。
此時,只要classpath下的文件發生了變化,項目就會自動重啟,這極大的提高了項目的開發速度
要是項目自動編譯,idea還需做一些簡單的配置。
打開setting,勾選自動構建項目。
然后按住CTRL+SHIFT+ALT+/
,調出如下頁面:選擇第一個
然后找到如下,並勾選:
重啟IDEA,這是你就可以使用devtools來自動構建項目了。
springboot中自動重啟項目的原理:
springboot中有兩個類加載器,一個是basecalssloader,負責項目引用的第三方jar,這類jar有一種特新,就是不會變化;另一個加載器是restartcalssloader,它用來加載自己寫的class,這寫類是有可能變化的。當項目需要重啟時,restartclassloader會被新創建的類加載器替代,而baseclassloader則不會,這要就省去了重新加載第三方jar包的時間,自然啟動速度就比冷啟動要快。
靜態資源文件:
默認情況下,靜態資源文件的修改是不觸發項目重啟的。當然也不是不能,開發者可以自己定義。
需要在配置文件中添加:
spring.devtools.restart.exclude=static/**
這表示static目錄下的靜態資源文件的修改也會觸發項目重啟。
還有另一種方式,也是同樣的效果:
spring.devtools.restart.additional-paths=src/main/resources/static
編碼是一個連續的過程,有時候重啟太頻繁了,不僅浪費電腦性能,也浪費我的寶貴時間。有一個方法可以解決這個問題,就是在你需要重啟項目時,修改一個指定的文件,只有這個指定的文件被修改才能觸發重啟項目,配置如下:
spring.devtools.restart.trigger-file=.trigger-file
其實靜態資源文件的修改是沒必要重啟項目的,devtools默認鍵入了LiveReload服務器,可以解決靜態資源的熱部署。只需要在chrome安裝livereload插件即可。