當前位置:編程學習大全網 - 編程語言 - Spring Boot 開發工具的使用

Spring Boot 開發工具的使用

Spring Boot 提供了壹套額外的工具,可以提升應用程序開發的體驗,只用在項目中包含 spring-boot-devtools 模塊就行。該模塊會在開發模式下設置壹些默認的屬性,例如:禁用緩存、設置日誌等級;還會監聽 classpath 的變化,自動的重啟應用。

spring-boot-devtools 給開發帶來了很多的便利,這篇文章總結可它的壹些用法。

要使用 devtools,需要先添加模塊依賴,Maven 和 Gradle 的配置如下:

Maven:

Gradle:

運行完整打包的應用時,開發工具會被禁用。當使用 java -jar 或者特殊的類加載器運行時,會被認為是生產環境。在 Maven 中使用 <optional>true</optional> 標記該依賴時可選的,或者在 Gradle 中使用自定義的 developmentOnly 配置可以防止開發工具應用到項目的其他模塊。

Spring Boot 中的壹些庫會通過緩存來提升性能。比如:模塊引擎緩存已編譯的模板,已避免重復解析模板文件;Spring MVC 在響應靜態資源時設置 HTTP 緩存頭。

啟用緩存在開發環境中非常有用,但是在生產環境下卻適得其反。因此 spring-boot-devtools 默認會為我們禁用掉緩存,而不用再去手動禁用了。

同時,開發工具還會將 Web 日誌的等級設置為 DEBUG ,這樣就可以看到更加詳細的請求和響應信息。如果要記錄所有請求詳細信息(包括可能的敏感信息),可以啟用 spring.http.log-request-details 。

如果不想使用默認的配置,可以設置 spring.devtools.add-properties 為 false 。

當 classpath 上的文件發生修改時,使用了 spring-boot-devtools 的應用會自動重啟。在開發過程中,會是壹個有用的功能,因為可以快速地看到修改導致的變化。

由於 DevTools 監視 classpath 資源,因此觸發重新啟動的唯壹方法是更新 classpath。在 Eclipse 中,默認在修改文件並保存時會自動編譯,從而觸發 classpath 更新,而 IntelliJ 中需要手動構建項目( Build -> Build Project )才行。當然,IntelliJ 中也可以 設置自動編譯 ,但我覺得沒有必要。

Devtools 通過兩個類加載器來完成重啟,對於第三方庫等不會發生修改的類,使用 base 類加載器,用戶編輯的類則使用 restart 類加載器。當應用重啟時, restart 類加載器會被丟棄然後創建壹個新的,這樣會加快重啟的速度。如果覺得重啟不夠快,可以考慮使用 JRebel ,它通過重新載入類來實現熱更新。

默認情況下,每次應用程序重新啟動時,都會輸出條件評估增量的報告。該報告顯示了修改應用程序時自動配置的變化,例如:添加或刪除 Bean 以及配置屬性。

添加下面的配置可以關閉該日誌:

某些資源在更改時不需要觸發重啟。默認情況下, /META-INF/maven 、 /META-INF/resources 、 /resources , /static 、 /public 或 /templates 中的資源發生修改時不會觸發重啟(但是會觸發 live reload,見下文)。

如果想要自定義需要排除的目錄,可以通過 spring.devtools.restart.exclude 屬性配置(逗號分隔多個)。如果想要維持默認的配置額外的排除其他目錄,可以通過 spring.devtools.restart.additional-exclude 屬性配置。

通過 spring.devtools.restart.additional-paths 可以配置額外的路徑以監聽變化。

如果不想使用重啟功能,可以通過 spring.devtools.restart.enabled 屬性設置。大多數情況下,直接在 application.properties 中設置即可。如果想要完全禁用重啟,需要在調用 SpringApplication.run(…) 之前設置 spring.devtools.restart.enabled System 屬性為 false :

如果使用不斷編譯已更改文件的 IDE,可能更喜歡僅在特定時間觸發重新啟動。我們可以使用“觸發器文件”,這是壹個特殊文件,當想要實際觸發重新啟動檢查時必須修改該文件。更改文件只會觸發檢查,只有在 Devtools 檢測到必須執行某些操作時才會重新啟動。觸發器文件可以手動更新,也可以使用 IDE 插件更新。

將 spring.devtools.restart.trigger-file 屬性設為觸發文件路徑。

spring-boot-devtools 模塊包含壹個嵌入式 LiveReload 服務器,可用於在資源更改時觸發瀏覽器刷新。瀏覽器需要安裝 LiveReload 插件 。

如果不想啟用 LiveReload 服務器,設置 spring.devtools.livereload.enabled 屬性為 false 。

壹次只能運行壹個 LiveReload 服務器。如果從 IDE 啟動多個應用程序,則只有第壹個具有 LiveReload 功能。

在 $HOME 目錄下創建壹個 .spring-boot-devtools.properties 文件,在裏面添加全局的 devtools 設置。添加到此文件的任何屬性都會應用到本機所有使用 devtools 的 Spring Boot 應用程序中。

  • 上一篇:電子商務專業課程設計
  • 下一篇:江蘇科技大學蘇州理工學院2020年報考政策解讀
  • copyright 2024編程學習大全網