English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

SpringBoot-DevTools

Spring Boot DevTools

Spring Boot 1.3Bietet ein weiteres Modul namens Spring Boot DevTools. DevTools steht für Developer Tool . Das Ziel dieses Moduls ist es, die Entwicklungszeit bei der Verwendung von Spring Boot-Anwendungen zu verkürzen. Spring Boot DevTools akzeptiert Änderungen und startet die Anwendung neu.

Wir können DevTools in unserem Projekt implementieren, indem wir die folgenden Abhängigkeiten in der Datei pom.xml hinzufügen.

<dependency>
<groupId>org.springframework.boot</groupId>/groupId>
<groupId>-boot-<artifactId>spring</artifactId>/<artifactId>devtools</artifactId>
<scope>runtime</scope>
</dependency>

Funktionen von Spring Boot DevTools

Spring Boot DevTools bietet folgende Funktionen:

Standardwerte der Eigenschaften Automatische Neustarts LiveReload Remote-Debugging-Tunnel Remote-Update und Neustart

Standardwerte der Eigenschaften: : Spring Boot bietet Template-Technologien Thymeleaf , enthält die Eigenschaften spring.thymeleaf.cache.. Caching und ermöglicht es uns, Seiten zu aktualisieren, ohne die Anwendung neu zu starten. Aber das Einstellen dieser Eigenschaften im Entwicklungsprozess bringt immer einige Probleme mit sich.

Wenn wir mit spring-boot-devtools-Modul, ist keine Einstellung erforderlich. Während der Entwicklungsphase von Thymeleaf, Freemarker, Groovy-Template-Caches wird automatisch deaktiviert.

注意: Wenn wir die Standardwerte der Eigenschaften auf der Anwendung nicht anwenden möchten, können wir configprop: spring.devtools.add in der Datei application.properties setzen-properties [] auf false gesetzt.

Automatische Neustarts: Automatische Neustarts bedeuten das Neuladen von Java-Klassen und deren Konfiguration auf dem Server. Nachdem die Serverseitigen Änderungen vorgenommen wurden, wird es dynamisch bereitgestellt, der Server wird neu gestartet und der geänderte Code wird geladen. Es wird hauptsächlich für Anwendungen basierend auf Microservices verwendet. Spring Boot verwendet Zweides Typs ClassLoader:

Unveränderte Klassen (drei Viertel) sind inbasic ClassLoader. Wir entwickeln aktiv geänderte Klassen inim ClassLoader neu starten.

Wird der Anwendung Neustart verlangt, wird der NeustartClassLoader verworfen und ein neuer Class gefüllt. Daher ist der grundlegende ClassLoader stets verfügbar und gefüllt.

我们可以使用属性 spring.devtools.restart.enabled Setzen Sie um den automatischen Neustart des Servers zu deaktivieren. Fehler.

Denken Sie daran:

DevTools überwacht stets die Classpath-Ressourcen. Der einzige Weg, um einen Neustart zu trigern, ist die Aktualisierung der Classpath. DevTools benötigt einen separaten Anwendungsclassloader, um ordnungsgemäß zu funktionieren. Standardmäßig abgeleitet Maven-Anwendungsprozess. Automatische Neustarts mit LiveReload arbeitet gut zusammen. DevTools hängt sich ab auf den Abhängigkeitshaken des Anwendungscontexes, um es während des Neustarts zu schließen.

LiveReload: Spring Boot DevTools模块包括一个名为 LiveReload的嵌入式服务器。,只要我们在其中进行更改,该应用程序就可以自动触发浏览器刷新。资源。这也称为 自动刷新。

注意: 我们可以通过设置属性 spring.devtools.livereload来禁用LiveReload。启用 false。

它提供了适用于Chrome,Firefox和Safari的浏览器扩展。默认情况下,启用LiveReload。 LiveReload在以下路径上工作:

/META-INF/maven /META-INF/resources /资源 /静态 /public /模板

我们还可以通过排除上述路径来禁用浏览器中的自动重新加载。例如:

spring.devtools.restart.exclude=public/**, static/**, templates/**

我们可以使用属性 spring.devtools.restart.additional-paths查看其他附加路径。例如:

spring.devtools.restart.additional-paths=/path-to-folder

如果我们要排除其他路径并希望保留默认路径,请使用属性 spring.devtools.restart.additional-exclude。例如:

spring.devtools.restart.additional-exclude=styles/**

记住

我们可以一次运行一台LiveReload服务器。 启动应用程序之前,请确保没有其他LiveReload服务器正在运行。 如果我们从IDE启动多个应用程序,则它仅支持第一个LiveReload。

远程调试隧道: Spring Boot可以通过HTTP将JDWP(Java调试线协议)直接隧道到应用程序。它甚至可以将应用程序部署到仅公开端口80和443的Internet Cloud提供商。

远程更新和重新启动: DevTools提供的另一个技巧是: 它支持远程应用程序 更新und 重新启动。它监视本地类路径中的文件更改,并将其推送到远程服务器,然后重新启动。我们还可以将此功能与LiveReload结合使用。

使用触发文件

由于频繁的重启,自动重启有时会减慢开发时间。为了解决这个问题,我们可以使用一个 触发文件。。SpringBoot监视触发文件并检测该文件中的修改。它会重新启动服务器并重新加载所有先前的更改。

我们可以通过添加属性 spring.devtools.restart.trigger-file在我们的应用程序中实现触发文件。Ist es intern oder extern? Zum Beispiel:

spring.devtools.restart.trigger-file=c:/workspace-sts-3.9.9.RELEASE/Neustart-trigger.txt

Spring Boot DevTools-Beispiel

Schritte1: Verwenden Sie Spring Initializr https://start.spring.io/.

Schritte2: Bereitstellung GruppeName und Arbeitsgruppe ID. Wir bieten den Gruppennamen com.w3Arbeitsgruppe und spring-boot-devtools-example.

Schritte3: Fügen Sie die folgenden Abhängigkeiten hinzu: spring-boot-starter-web und spring-boot-devtools .

Schritte4: Klicken ErstellenKnopf. Er lädt das Projekt Jar Datei.

Schritte5: Jar-Datei extrahieren.

Schritte6: Das Verzeichnis in STS importieren.

Datei->Importieren->Bestehendes Maven-Projekt->Durchsuchen->Verzeichnis auswählen-boot-devtools-example->Erledigt

Nachdem das Importieren erfolgreich war, können wir die folgenden Verzeichnisse im Package Explorer von STS sehen.

Schritte7: Öffnen SpringBootDevtoolsExampleApplication.java und führen Sie es als Java-Anwendung aus.

Dann führen Sie alle Änderungen (Bearbeiten oder Löschen einiger Dateien oder Codes) in der Anwendung durch und speichern Sie die vorgenommenen Änderungen. Nach dem Speichern der Änderungen wird der Server neu gestartet und die Änderungen übernommen.