Einstieg in Spring Boot, Teil 6 Die Spring Boot Developer Tools

Autor / Redakteur: Dr. Dirk Koller / Stephan Augsten

Verglichen mit der frühen JEE-Entwicklung fühlt sich Spring Boot wie Magie an. So schnell, so intuitiv. Nur wenige Dinge trüben den Coding-Spaß. Muss man den Server denn bei jeder Änderung neu starten? Und könnten sich die Webseiten nicht automatisch aktualisieren?

Firmen zum Thema

Mit den Spring Boot Dev Tools gehen einige Arbeiten in der Java-Entwicklung noch einfacher von der Hand.
Mit den Spring Boot Dev Tools gehen einige Arbeiten in der Java-Entwicklung noch einfacher von der Hand.
(Bild: mohamed_hassan (Bild bearbeitet) / Pixabay )

Nachdem wir uns in den ersten Artikeln der Reihe mit den Grundlagen von Spring und Spring Boot ein wenig vertraut gemacht haben, soll es in diesem Beitrag erstmalig um Werkzeuge gehen. Davon gibt es eine ganze Reihe, und sie werden zwischendurch immer mal wieder vorgestellt.

Das wohl wichtigste Werkzeug sind die Spring Boot Developer Tools, kurz DevTools. Die Developer Tools sind Teil von Spring Boot, also ein recht offizielles Werkzeug. Sie müssen dem Projekt aber dennoch explizit zugefügt werden. Die Installation erfolgt durch Einbinden einer Abhängigkeit im POM des jeweiligen Projekts:

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

In der Spring Tool Suite (STS) kann das Modul alternativ direkt über ein Kontextmenü eingebunden werden: Rechtsklick auf pom.xml und dann Spring > Add DevTools auswählen.

„Spring Boot“-Tutorial
Bildergalerie mit 18 Bildern

In der Spring Tool Suite erkennt man die aktiven DevTools an dem Hinweis in Klammern hinter dem Projektnamen.
In der Spring Tool Suite erkennt man die aktiven DevTools an dem Hinweis in Klammern hinter dem Projektnamen.
(Bild: Dr. Koller)

Nach einem Neustart stehen die Entwicklerwerkzeuge dann zur Verfügung. Im STS-Package Explorer wird auf die aktivierten DevTools durch einen gleichnamigen Eintrag hinter dem Projektnamen hingewiesen.

Beim Start einer Anwendung findet sich außerdem der folgende Hinweis in der Konsole:

Devtools property defaults active! Set 'spring.devtools.add-properties' to 'false' to disable

Um sicherzugehen, dass die DevTools funktionsbereit sind, sollte das nach dem Einbinden überprüft werden.

Blitzschneller Restart

Das wohl wichtigste Feature der Sammlung ist der automatische Restart. Nach Änderungen im Code wird bei Auslösen eines bestimmten Triggers ein Neustart des Embedded Tomcat ausgelöst. Bei Eclipse bzw. STS ist dieser Trigger das Speichern einer Source-Code-Datei im Klassenpfad.

Spring Boot arbeitet hier mit zwei separaten Classloadern, so dass nur Java-Klassen und Properties des eigenen Projekts im Restart-Classloader neu geladen werden müssen. Bibliotheken in den Dependencies werden von einem anderen Classloader verwaltet und bleiben geladen. Der Restart geschieht deswegen erfreulich schnell.

Man erkennt den Neustart an den Ausgaben in der Konsole beim Speichern einer Datei. Änderungen an statischen Assets wie Bildern oder Thymeleaf Templates unter /META-INF/maven, /META-INF/resources, /resources, /static, /public oder /templates lösen keinen Restart aus. Die Liste der Ordner lässt sich bei Bedarf anpassen.

Wichtig: Neu zugefügte Jars in der pom.xml lösen den Trigger auch nicht aus. Nach dem Hinzufügen einer Dependency muss also von Hand durchgestartet werden – ein Umstand, den man bei all dem neuen Komfort leicht vergisst. Der Restart ist das mächtigste Feature der Entwicklertools und rechtfertigt allein schon die Nutzung. Aber es gibt noch weitere Helferlein.

Ungecacht

Thymeleaf-Templates werden im Normalfall von Spring Boot gecacht. Klar, der Nutzer soll die Seiten so schnell wie möglich zu sehen bekommen. Bei der Entwicklung ist das allerdings störend, weil man Änderungen am Template nach einem Browser-Refresh nicht sofort sieht. Um die Auswirkung einer Änderung zu Gesicht zu bekommen, muss die ganze Anwendung neu gestartet werden.

Die DevTools beseitigen dieses Manko und deaktivieren den Cache während der Entwicklung. Eine Aktualisierung der Seite im Browser zeigt nun geänderte Templates sofort an. Auch wenn es sich bei der Entwicklung ähnlich anfühlt, hat das nichts mit dem automatischen Restart zu tun.

Den Cache kann man übrigens auch ohne die DevTools ausschalten, die entsprechende Property in application.properties heißt spring.thymeleaf.cache und muss zur Deaktivierung des Cache auf false gesetzt werden.

spring.thymeleaf.cache: false

Live Reloaded

Wäre es nicht schön, wenn selbst das Refreshen im Browser entfallen könnte? Also Speichern der html-Datei und sofort die Auswirkungen sehen? Kein Problem, auch dafür gibt’s ein Werkzeug, es nennt sich „Live Reload“. Allerdings ist für das Feature die gleichnamige Browsererweiterung erforderlich. Man erhält sie auf der Seite des Anbieters für die gängigen Browser (Chrome, Firefox, Safari). Je nach Browser gibt es dabei eventuell Besonderheiten zu beachten.

Das Icon von Live Reload gibt einen subtilen Hinweis auf den Status der Erweiterung. Hier ist sie deaktiviert.
Das Icon von Live Reload gibt einen subtilen Hinweis auf den Status der Erweiterung. Hier ist sie deaktiviert.
(Bild: Dr. Koller)

Die erfolgreiche Installation, hier in Chrome, erkennt man am Refresh-Symbol hinter der Adressleiste. Die Erweiterung lässt sich durch einen Klick auf das Symbol an- bzw. ausschalten. Der kleine Kreis in der Mitte des Icons muss ausgefüllt sein, damit Live Reload aktiv ist. In der Konsole sollte sich nach der Installation der DevTools ebenfalls ein Hinweis auf LiveReload finden:

LiveReload server is running on port 35729

Ändert man nun den Code einer im Browser angezeigten Seite, zum Beispiel in dem man einen Text oder einen Button im Template hinzufügt oder etwas im CSS ändert, so tauchen diese Änderungen wie von Geisterhand auch im Browser auf. Die Erweiterung benötigt umfangreiche Rechte zum Lesen und Ändern von Daten auf den besuchten Webseiten. Wer das nicht möchte, kann die Funktion auf in den Einstellungen des Plugins angebbare Seiten beschränken.

„Spring Boot“-Tutorial
Bildergalerie mit 18 Bildern

Fazit

Die Developer Tools sind ein mächtiges und nützliches Werkzeug, das eigentlich in jedem Projekt unverzichtbar ist. Wer einmal mit dem automatischen Restart entwickelt hat, wird auf das Feature nicht mehr verzichten wollen. Der ohnehin schon schnelle Start der Anwendung durch den eingebetteten Tomcat wird noch mal beschleunigt. Und auch der Rest der Werkzeuge ist hilfreich, wenn auch nicht in gleichem Maße. Weiterführende Informationen zu den DevTools finden sich in der Spring-Boot-Dokumentation.

Im siebten Teil unseres Tutorials befassen wir uns mit der Frage, wie sich Formulareingaben mit Spring Boot validieren lassen.

(ID:47074548)

Über den Autor