Spring Boot: Vom Hype zur etablierten Basistechnologie?

Seite 3: Core-Entwicklung

Inhaltsverzeichnis

Unter Core-Entwicklung fallen alle Themen, die die eigentliche Arbeit mit Spring und Spring Boot erleichtern, aber auch nicht funktionale Themen wie die Unterstützung von Caching.

Die Spring DevTools beschleunigen die Entwicklung. Sie ermöglichen, den Spring-Kontext nach Änderungen von Class-Files in Teilen neu zuladen. Anschließend startet Spring Boot in der Regel schnell, aber das Neuladen nur geänderter Teile ist nochmals schneller.

Der Configuration Processor hilft dabei, die Konfiguration der eigenen Anwendung in dezidierte Klassen auszulagern: Er generiert Metadaten, die sich in allen größeren IDEs lesen lassen. Sie helfen, application.properties zu schreiben beziehungsweise die mögliche Konfiguration der eigenen Anwendung zu dokumentieren.

Caching, Aspekte und Validierung sind in Teilen im Spring Framework selbst implementiert. Genau wie Security und Session-Support sind sie aber dennoch nur anwendungsübergreifende Aspekte, die Spring Boot automatisch konfiguriert.

Die Vielzahl der von Spring Boot unterstützten Datenbanken aufzuzählen, sprengt den Rahmen dieses Artikels. Relationale Datenbanken mit ihrem jeweiligen JDBC-Treiber zählen aber auf jeden Fall dazu. Sind sie extern konfiguriert, müssen JDBC-DataSources nur dann manuell bereitgestellt werden, wenn die Anwendung spezielle Anforderungen hat. Darauf aufbauend lässt sich JPA entweder in Form von EclipseLink oder Hibernate einfach zusammen mit Spring Data JPA nutzen.

Ähnlich verhält es sich mit dem Thema Datenbankmigration. Liquibase und Flyway unterstützt Spring Boot automatisch ohne weitere Konfiguration – sie arbeiten mit der einmal konfigurierten Datenquelle zusammen. Kommt Spring Boot für die Entwicklung eines Microservice auf Basis relationaler Datenbanken zum Einsatz, stellt sich die Frage: Wer hat die Hoheit über das Datenbankschema? Auch hier gilt, dass Spring Boot in vielen Fällen sinnvolle Werkzeuge zur Verfügung stellt. Die sinnvolle Anwendung des Werkzeuges bleibt jedoch den Entwicklern überlassen.

Bei den nicht relationalen Datenbanken ist die Vielfalt noch größer: Graphdatenbanken wie Neo4j und Documentstores wie Mongo oder Elasticsearch unterstützt Spring Boot ebenso wie Redis, Cassandra, Couchbase und andere. In der Regel stehen für jede der genannten Datenbanken separate Spring-Data-Module zur Verfügung. Spring Boot stellt wie im JDBC/JPA-Umfeld einheitliche Mechanismen zur Konfiguration von URLs und Credentials bereit.

Spring Web MVC ist Teil des Spring Framework. Seit Spring 5 steht parallel dazu Spring WebFlux parat. Beides sind Request-orientierte Webframeworks, die Spring Boot automatisch konfiguriert. Für Vaadin, ein komponentenorientiertes Framework, steht ein Starter zur Verfügung. Entwickler, die einen ressourcenorientierten Ansatz bevorzugen, können aus Spring Boot heraus auch Jersey 2 ohne weitere Umwege nutzen.

Auch wenn es nach Einschätzung des Autors heute nicht mehr en vogue erscheint, HTML-Inhalte auf dem Server zu generieren, sollen Template-Engines an dieser Stelle nicht unerwähnt bleiben. Thymeleaf, Freemarker, Mustache und Groovy-Templates lassen sich mit Spring Boot unmittelbar verwenden.

Der eigentliche Mehrwert einer Anwendung erschließt sich erst dann, wenn sie in den Produktivbetrieb übergeht. Dabei helfen Spring-Boot-Module wie Actuator. Er stellt Status- und Health-Endpunkte sowohl als Webschnittstelle als auch per JMX bereit, die Auskunft über die Anwendung geben. Micrometer ist ein neues Projekt zur Erfassung von System-, Anwendungs- und Systemmetriken. Es lässt sich per Actuator in eine Anwendung bringen und automatisch konfigurieren. Alternativ lässt sich Micrometer auch unabhängig von Spring Boot einsetzen.