Der Hauptgrund, warum Spring Boot von der Spring-Community entwickelt wurde, besteht darin, das Packen und Bereitstellen Ihrer Spring-Anwendungen in der Produktion zu vereinfachen. Vor diesem Hintergrund geht Spring Boot davon aus, dass alle beim Start geladenen Standardwerte für die produktionsbereite Anwendung optimiert sind. Beispielsweise ist das Caching von Thymeleaf-Vorlagen standardmäßig aktiviert, was die Leistung in der Produktion verbessert. Diese Einstellungen müssen jedoch deaktiviert werden, damit die Entwicklungsumgebung die Anwendungen effektiv testen kann, wann immer Sie Änderungen am Code vornehmen.
Dieses Tutorial führt Sie durch die verschiedenen Funktionen, die im Devtools-Modul verfügbar sind.
Das Inhaltsverzeichnis für dieses Tutorial:
Was sind Spring Boot devTools?
Spring Boot 1.3 wird mit neuem Modul ausgeliefert spring-boot-devtools
. Das Hauptziel dieses Moduls besteht darin, die Entwicklungsgeschwindigkeit zu verbessern, indem einige der Schlüsselfunktionen aktiviert werden, die während der Entwicklungsphase Ihres Projekts wichtig sind. In diesem Tutorial wird erläutert, wie Sie Spring Boot Devtools und verschiedene Optionen verwenden, die als Teil der Spring Boot Devtools verfügbar sind.
Sie können dieses Modul in Ihre Spring-Boot-Anwendung einbinden, indem Sie das folgende Maven-Snippet hinzufügen:
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> </dependency> </dependencies>
Für Gradle-Build:
dependencies { compile("org.springframework.boot:spring-boot-devtools") }
Sobald Sie die oben genannte Abhängigkeit zur Spring-Boot-Anwendung hinzugefügt haben, werden viele hinzugefügt spring-boot-devtools
Merkmale.
Automatischer Neustart
Greg L. Turnquist hat Recht, das wahre Juwel von Spring Boot kommt heraus. Wenn Sie Entwickler sind, wissen Sie genau, wie wichtig es ist, die Anwendung automatisch zu laden, wenn sich der Code ändert. Es ist eine der Hauptfunktionen, die seit ihrer Einführung in der Spring-Boot-Anwendung fehlt. Die Devtools-Funktionen sorgen jedoch für einen automatischen Neustart der Anwendung bei allen Codeänderungen.
Bei Änderungen am Klassenpfad wird die Anwendung automatisch neu gestartet, um die neuen Änderungen zu übernehmen. Das geht ziemlich schnell, wenn ich es in meinem lokalen System getestet habe. Das Spring-Boot-Team hat zwei Klassenlader verwaltet, einen zum Laden der projektspezifischen Klassendateien (die sich häufig ändern) und einen anderen für Bibliotheken von Drittanbietern.
Bei Änderungen an den Projektdateien startet Spring Boot einen Klassenlader neu, der die projektspezifischen Klassendateien lädt. Da nicht die gesamte Anwendung geladen wird, ist die Geschwindigkeit des Neustarts viel schneller. Wenn Sie Erfahrungen haben, schreiben Sie diese bitte in den Kommentarbereich.
Ressourcen ausschließen
Wenn der automatische Neustart aktiviert ist, werden alle Dateien im Klassenpfad auf Änderungen überwacht. Wenn jedoch Änderungen an den statischen Dateien wie Vorlagen, CSS usw. vorgenommen werden, ist zum Laden der Ressourcen kein Serverneustart erforderlich. Um dieses Problem zu lösen, können Sie die Dateien unter einem bestimmten Pfad ganz einfach von der Option für den automatischen Neustart ausschließen. Sie können die Ressourcen hinzufügen, die Sie bei Änderungen nicht laden möchten:
spring.devtools.restart.exclude=/META-INF/resources
Deaktivieren Sie den Neustart
Sie können die Neustartoption auch deaktivieren, indem Sie Folgendes hinzufügen spring.devtools.restart.enabled
Eigentum an die application.properties
Datei wie folgt:
spring.devtools.restart.enabled=false
Das Gute daran ist, dass diese Eigenschaft beim Festlegen sofort wirksam wird und Sie die Spring-Boot-Anwendung nicht manuell stoppen und starten müssen.
Sehen Sie sich „Zusätzliche Pfade“ an
Standardmäßig führt die Spring-Boot-Anwendung nur dann einen automatischen Neustart durch, wenn sich die Ressourcen im Klassenpfad ändern. Wenn Sie jedoch den automatischen Neustart für die Ressourcen außerhalb des Klassenpfads aktivieren möchten, können Sie die folgende Eigenschaft verwenden, um die zusätzlichen Pfade beim automatischen Neustart hinzuzufügen.
spring.devtools.restart.additional-paths=/src
Standardeigenschaften
Spring Boot unterstützt mehrere Cache-Bibliotheken zur Verbesserung der Leistung. Standardmäßig ist das Vorlagen-Caching von Spring Boot aktiviert, um die Leistung zu verbessern. Dies ist jedoch zum Zeitpunkt der Entwicklung kontraproduktiv. Vor Spring Boot 1.3.0 müssen Entwickler das aktualisieren application.properties Datei zum Deaktivieren des Caches.
Jetzt wird es geändert. Durch das Hinzufügen der spring-boot-devtools
sind die folgenden Vorlagencaches standardmäßig deaktiviert:
- spring.thymeleaf.cache=false
- spring.freemarker.cache=false
- spring.groovy.template.cache=false
- spring.velocity.cache=false
- spring.mustache.cache=false
Diese Konfigurationen werden in der Datei aktualisiert DevToolsPropertyDefaultsPostProcessor.java
Live-Neuladen
spring-boot-devtools
beinhaltet den eingebetteten LiveReload-Server. Immer wenn Änderungen am Server vorgenommen werden, wird der Browser eine Aktualisierung auslösen. Sie können die kostenlose Erweiterung für den Live-Reload erhalten Hier.
Wenn Sie den LiveReload-Server beim Start nicht starten möchten, fügen Sie bitte den folgenden Eintrag hinzu application.properties
:
spring.devtools.livereload.enabled=false
Beachten Sie, dass Sie jeweils nur einen LiveReload-Server ausführen können. Wenn Sie mehrere Anwendungen in Ihrer IDE ausführen, ist LiveReload für den ersten aktiviert.
Sie können die Startmeldung des LiveReload-Servers in der Konsole sehen. Wenn Sie das einstellen spring.devtools.livereload.enabled
Eigentum zu false
dann wird der Server nicht gestartet, wenn Spring Boot die Anwendung initialisiert.
Zusammenfassung
Ich hoffe, dieses Tutorial bietet gute Informationen darüber, was Spring Boot Devtools sind, welche Funktionen die Devtools bieten und wie man sie verwendet. Auf hohem Niveau ist es ein Zusatzmodul zur Federanwendung zur Verbesserung der Produktivität. Insbesondere die Funktion zum automatischen Neustart ist zur Entwicklungszeit sehr nützlich. Wenn Sie Fragen haben, schreiben Sie diese bitte in den Kommentarbereich.
Vielen Dank, dass Sie meinen Blog gelesen haben!! Fröhliches Lesen!!