Spring-boot-devtools給開發帶來了很多便利。本文總結了它的壹些用途。
要使用devtools,您需要首先添加模塊依賴關系。Maven和Gradle的配置如下:
瑪芬:
格拉德:
運行完全打包的應用程序時,開發工具將被禁用。當使用java -jar或特殊的類加載器運行時,它將被視為生產環境。專家
Spring Boot的壹些圖書館將通過緩存提高性能。例如,模塊引擎緩存編譯後的模板,以避免重復解析模板文件;Spring MVC在響應靜態資源時設置HTTP緩存頭。
啟用緩存在開發環境中非常有用,但在生產環境中卻適得其反。因此,spring-boot-devtools將默認為我們禁用緩存,而不是手動禁用它。
同時,開發工具還將Web日誌的級別設置為DEBUG,以便您可以查看更詳細的請求和響應信息。如果您想記錄所有請求細節(包括可能的敏感信息),您可以啟用spring。http . log-請求-詳細信息。
如果不想使用默認配置,可以將spring.devtools.add-properties設置為false。
當類路徑上的文件被修改時,使用spring-boot-devtools的應用程序將自動重啟。在開發過程中,這將是壹個有用的功能,因為您可以快速看到修改所引起的變化。
由於DevTools監視類路徑資源,因此觸發重啟的唯壹方法是更新類路徑。在Eclipse中,默認情況下文件在修改和保存時會自動編譯,從而觸發類路徑更新,而在IntelliJ中,則需要手動構建項目(build-》;構建項目)。當然,在IntelliJ中也可以設置自動編譯,但我認為沒有必要。
Devtools通過兩個類加載器重新啟動。對於不會被修改的類(如第三方庫),使用基類加載器,用戶編輯的類使用重啟類加載器。當應用程序重啟時,重啟類加載器將被丟棄並創建壹個新的類加載器,這將加快重啟速度。如果覺得重啟不夠快,可以考慮使用JRebel,它通過重載類來實現熱更新。
默認情況下,每次重新啟動應用程序時,都會輸出增量條件評估報告。此報告顯示修改應用程序時自動配置的變化,例如添加或刪除Bean以及配置屬性。
添加以下配置以關閉該日誌:
有些資源在更改時不需要觸發重啟。默認情況下,當/META-INF/maven、/META-INF/resources、/resources、/static、/public或/templates中的資源被修改時,不會觸發重新啟動(但會觸發實時重新加載,請參見下文)。
如果您想定制需要排除的目錄,可以通過spring配置它們。devtools.restart.exclude屬性(逗號分隔多個目錄)。如果您想保持默認配置並排除其他目錄,您可以通過spring配置它。dev tools . restart . additional-exclude屬性。
可以配置額外的路徑來通過spring監聽變化。dev tools . restart . additional-path。
如果不想使用重啟功能,可以通過spring進行設置。devtools.restart.enabled屬性。在大多數情況下,可以直接在application.properties中設置。如果要完全禁用重新啟動,則需要在調用spring application。run(…)之前將spring。dev tools。restart。enabled system的屬性設置為false:
如果您使用壹個不斷編譯已更改文件的IDE,您可能更喜歡僅在特定時間觸發重新啟動。我們可以使用“觸發文件”,這是壹個特殊的文件,當我們想要實際觸發重啟檢查時必須修改它。更改文件只會觸發檢查,並且只有在Devtools檢測到必須執行某些操作時才會重新啟動。可以手動或使用IDE插件更新觸發器文件。
將spring . dev tools . restart . trigger-file屬性設置為觸發器文件路徑。
Spring-boot-devtools模塊包含壹個嵌入式LiveReload服務器,可用於在資源發生變化時觸發瀏覽器刷新。瀏覽器需要安裝LiveReload插件。
如果您不想啟用LiveReload服務器,請設置spring的屬性。devtools.livereload.enabled設置為false。
壹次只能運行壹個LiveReload服務器。如果從IDE啟動多個應用程序,只有第壹個應用程序具有LiveReload功能。
在$HOME目錄中創建壹個。spring-boot-devtools。properties文件,並在其中添加全局dev tools設置。添加到此文件中的任何屬性都將應用於在此計算機上使用devtools的所有Spring Boot應用程序。