Spring Boot 1.3提供了另一個名為Spring Boot DevTools的模塊。 DevTools代表 Developer Tool 。該模塊的目的是在使用Spring Boot應(yīng)用程序時嘗試并縮短開發(fā)時間。 Spring Boot DevTools接受更改并重新啟動應(yīng)用程序。
我們可以通過在pom.xml文件中添加以下依賴項(xiàng)來在我們的項(xiàng)目中實(shí)現(xiàn)DevTools。
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime<scope > </dependency>
Spring Boot DevTools提供以下功能:
屬性默認(rèn)值 自動重啟 LiveReload 遠(yuǎn)程調(diào)試隧道 遠(yuǎn)程更新和重新啟動
屬性默認(rèn)值: : Spring Boot提供了模板技術(shù) Thymeleaf ,其中包含屬性 spring.thymeleaf.cache。。緩存并允許我們更新頁面,而無需重新啟動應(yīng)用程序。但是在開發(fā)過程中設(shè)置這些屬性總是會帶來一些問題。
當(dāng)我們使用spring-boot-devtools模塊時,不需要設(shè)置屬性。在Thymeleaf,F(xiàn)reemarker,Groovy模板的開發(fā)緩存期間,將自動禁用。
自動重啟: 自動重啟意味著重新加載Java類并在服務(wù)器端對其進(jìn)行配置。服務(wù)器端更改后,它會動態(tài)部署,服務(wù)器會重新啟動,并加載修改后的代碼。它主要用于基于微服務(wù)的應(yīng)用程序。 Spring Boot使用 兩種類型的ClassLoader:
不變的類(三分之二)已加載到基本ClassLoader中。 我們正在積極開發(fā)的類已加載到重新啟動ClassLoader中。
應(yīng)用程序重新啟動時,重新啟動的ClassLoader被丟棄,并填充了一個新的類。因此,基本的ClassLoader始終可用并已填充。
我們可以使用屬性 spring.devtools.restart.enabled 設(shè)置為 來禁用服務(wù)器的自動重啟。錯誤。
DevTools始終監(jiān)視類路徑資源。 觸發(fā)重啟的唯一方法是更新類路徑。 DevTools需要單獨(dú)的應(yīng)用程序類加載器才能正常工作。默認(rèn)情況下,Maven派生應(yīng)用程序進(jìn)程。 自動重新啟動與 LiveReload一起很好地工作。 DevTools依賴于應(yīng)用程序上下文的關(guān)閉掛鉤在重新啟動期間將其關(guān)閉。
LiveReload: Spring Boot DevTools模塊包括一個名為 LiveReload的嵌入式服務(wù)器。,只要我們在其中進(jìn)行更改,該應(yīng)用程序就可以自動觸發(fā)瀏覽器刷新。資源。這也稱為 自動刷新。
注意: 我們可以通過設(shè)置屬性 spring.devtools.livereload來禁用LiveReload。啟用為 false。
它提供了適用于Chrome,F(xiàn)irefox和Safari的瀏覽器擴(kuò)展。默認(rèn)情況下,啟用LiveReload。 LiveReload在以下路徑上工作:
/META-INF/maven /META-INF/resources /資源 /靜態(tài) /public /模板
我們還可以通過排除上述路徑來禁用瀏覽器中的自動重新加載。例如:
spring.devtools.restart.exclude=public/**, static/**, templates/**
我們可以使用屬性 spring.devtools.restart.additional-paths查看其他附加路徑。例如:
spring.devtools.restart.additional-paths=/path-to-folder
如果我們要排除其他路徑并希望保留默認(rèn)路徑,請使用屬性 spring.devtools.restart.additional-exclude。例如:
spring.devtools.restart.additional-exclude=styles/**
我們可以一次運(yùn)行一臺LiveReload服務(wù)器。 啟動應(yīng)用程序之前,請確保沒有其他LiveReload服務(wù)器正在運(yùn)行。 如果我們從IDE啟動多個應(yīng)用程序,則它僅支持第一個LiveReload。
遠(yuǎn)程調(diào)試隧道: Spring Boot可以通過HTTP將JDWP(Java調(diào)試線協(xié)議)直接隧道到應(yīng)用程序。它甚至可以將應(yīng)用程序部署到僅公開端口80和443的Internet Cloud提供商。
遠(yuǎn)程更新和重新啟動: DevTools提供的另一個技巧是: 它支持遠(yuǎn)程應(yīng)用程序 更新和 重新啟動。它監(jiān)視本地類路徑中的文件更改,并將其推送到遠(yuǎn)程服務(wù)器,然后重新啟動。我們還可以將此功能與LiveReload結(jié)合使用。
由于頻繁的重啟,自動重啟有時會減慢開發(fā)時間。為了解決這個問題,我們可以使用一個 觸發(fā)文件。。SpringBoot監(jiān)視觸發(fā)文件并檢測該文件中的修改。它會重新啟動服務(wù)器并重新加載所有先前的更改。
我們可以通過添加屬性 spring.devtools.restart.trigger-file在我們的應(yīng)用程序中實(shí)現(xiàn)觸發(fā)文件。是內(nèi)部的還是外部的。例如:
spring.devtools.restart.trigger-file=c:/workspace-sts-3.9.9.RELEASE/restart-trigger.txt
步驟1: 使用Spring Initializr https://start.spring.io/。
步驟2: 提供 組名稱和 工件 ID。我們提供了組名 com.nhooo 和工件ID spring-boot-devtools-example。
步驟3: 添加以下依賴項(xiàng): spring-boot-starter-web 和 spring-boot-devtools 。
步驟4: 點(diǎn)擊 生成按鈕。它將下載項(xiàng)目的 Jar 文件。
步驟5: 提取Jar文件。
步驟6: 將文件夾導(dǎo)入STS。
文件->導(dǎo)入->現(xiàn)有Maven項(xiàng)目->瀏覽->選擇文件夾spring-boot-devtools-example->完成
導(dǎo)入成功后,我們可以在STS的Package Explorer部分中看到以下目錄。
步驟7: 打開 SpringBootDevtoolsExampleApplication.java 并將其作為Java應(yīng)用程序運(yùn)行。
然后,在應(yīng)用程序中進(jìn)行任何更改(編輯或刪除一些文件或代碼),然后保存所做的更改。保存更改后,服務(wù)器將重新啟動并獲取更改。