Suche
Interview mit Michael Simons

Spring Boot Starter: Was sie sind und was sie können

Dominik Mohilo
5773b4e6e5d5faa45d0c8292version177sizefull

Michael Simons

Rund um Spring Boot hat sich ein Ökosystem von “Startern” entwickelt: Module, die automatische Konfiguration und Abhängigkeiten mitbringen und dabei helfen, vollständige Anwendungen und Microservices zu modularisieren. Im Interview erklärt W-JAX 2016 Speaker Michael Simons, wie die Spring Boot Starter funktionieren, welche es gibt und welche Vorteile Spring Boot gegenüber vergleichbaren Lösungen hat.

w-jax 2016 logoTreffen Sie Michael Simons auf der W-JAX 2016

Die Session Keine Magie: Individuelle Spring-Boot-Module wird am Donnerstag, 10. November, ab 14.30 Uhr im Saal “Barcelona” stattfinden.
 

 

JAXenter: Hallo Michael und danke, dass du dir Zeit genommen hast. In deiner Session auf der W-JAX geht es um individuelle Spring-Boot-Module und sogenannte Starter. Kannst du kurz erläutern, was diese Starter sind und was sie können?

Michael Simons: Starter sind die Bausteine von Spring Boot. Auch wenn Spring Boot Applikationen oder Microservices in der Mehrzahl aller Fälle als “Fat-Jars” ausgeliefert werden, ist Spring Boot sehr modular aufgebaut. Neben dem Depedency Management, das über eine Spezialisierung der Spring Bill of Materials (BOM) realisiert wird, gehören dazu eben die Starter.

Auch wenn Applikationen oder Microservices in der Mehrzahl aller Fälle als ‘Fat-Jars’ ausgeliefert werden, ist Spring Boot sehr modular aufgebaut

Starter bestehen aus zwei Teilen: Der “Autoconfiguration” und dem eigentlichen Starter-Modul. Das Autoconfiguration-Modul beinhaltet die Spring-Konfiguration, die dazu dient, die jeweilige Funktionalität zu unterstützen und zu Konfigurieren. Das Starter-Modul selber stellt die Abhängigkeit zum Autoconfiguration-Modul sowie zu allen benötigten Dependencies bereit. Um einen Starter zu benutzen, reicht es aus, genau dieses Modul als Abhängigkeit der eigenen Anwendung zu deklarieren.

Für die Unterstützung des Datenbank-Query-Builder-Framework jOOQ sieht es z.B. so aus, dass das Autoconfiguration-Modul einige Support-Klassen wie Exception Translator, Transaction Provider und ähnliches sowie eine Konfiguration für den zentralen jOOQ-Kontext enthält. Das Starter-Modul selber deklariert nur noch die Abhängigkeit zu jOOQ.

jOOQ und eine Vielzahl weiterer Projekte werden direkt von Spring Boot unterstützt und sind Teil des Spring-Boot-Autoconfigure-Projektes, welches zentrale Abhängigkeit jeder Spring-Boot-Anwendung ist. Für eigene Starter wird ein weiterer Mechanismus benötigt: Nach außen stellen Starter sich in der Regel als normale Java Libraries (Jarfiles) dar, beinhalten aber mit dem Spring-Factories-Mechanismus eine Implementierung des Service Locator Patterns. Diese ermöglicht es, dass zur Inbetriebnahme eines Starters das Deklarieren einer Abhängigkeit zu diesem Starter ohne weitere explizite Konfiguration notwendig ist.

JAXenter: Für welche Technologien gibt es solche Starter bereits?

Michael Simons: Für quasi das gesamte Spring-Ökosystem und eine Vielzahl weiterer, wichtiger Java Projekte. Es gibt ein entsprechendes GitHub Repository, in dem man die offiziellen Starter findet. Wir sehen Datenbanken unterschiedlichster Art, Cloud-Technologien, eine Handvoll Template-Sprachen und vieles mehr.

Der Embedded Container (Tomcat, Undertow oder Jetty), der oft genutzt wird, ist natürlich auch als Starter implementiert. Eine bessere Übersicht liefert aber der Spring Initalizr (Auf “Full Version” klicken, fast jede Checkbox ist ein Starter). Interessante Third Party Starter sind der reCAPTCHA-Starter oder auch meiner eigener wro4j-Starter.

JAXenter: Welche Vorteile hat Spring Boot gegenüber Konkurrenzprodukten wie etwa Dropwizard. MicroProfile oder Lagom?

Michael Simons: In meiner Firma war und ist viel Spring-Wissen vorhanden. Spring Boot ist kein neues Framework, sondern stellt im einfachsten Fall einfach fertig konfigurierte Instanzen des Spring Frameworks zur Verfügung. Vorhandenes Wissen kann weiter genutzt werden.

Das Ende der ‘Alles oder nichts’-Application Server ist abzusehen

Ich schätze die hervorragende Dokumentation fast jedes Spring-Projektes, insbesondere des Spring Frameworks selber, aber auch die von Spring Boot und Spring Data. Von ebenso großem Wert ist die sehr offene Community und die Wertschätzung der Kernentwickler auch gegenüber kleinen Beiträgen. Der Fairness halber möchte ich sagen, dass ich nicht beurteilen kann, wie das Dropwizard oder Lagom aussieht.

Ich möchte an dieser Stelle gar nicht darüber sprechen, welches Produkt oder auch Konzept (im Falle von MicroProfile) besser ist. Der Ansatz von Lagom, eben ohne bestehende “alte” Konzepte auszukommen, macht es natürlich einfacher, reaktive Konzepte umzusetzen. Etwas, das erst im nächsten Jahr mit Spring Framework 5 und Spring Boot 2 in Form von Project Reactor vollständig in der Spring-Welt ankommt. MicroProfile ist an dieser Stelle als Konzept hervorzuheben, das an einer Stelle weitermacht, die ein anderer Hersteller wohl zeitweise aus den Augen verloren hat.

JAXenter: Der Trend scheint in die Richtung zu gehen, keine vollständigen Java EE Application Server mehr zu deployen. Ist aus deiner Sicht das Ende der Application Server abzusehen?

Michael Simons: Höchstens das Ende der “Alles oder nichts”-Application-Server.

JAXenter: Wie sollte sich Spring Boot deiner Meinung nach in den nächsten Jahren entwickeln? Welche Neuerungen und Innovationen wünscht du dir?

Michael Simons: Ich genieße im Moment die Freiheit, die mir Spring Boot und Spring bieten, meine fachlichen Probleme lösen zu können, ohne dass mir die Konfiguration eines Application Contexts großartig im Weg steht. Spring Boot hat in meinen Augen an vielen Stellen in der Java Welt positive Veränderungen bewirkt.

Was mir persönlich fehlt ist eine bessere Dokumentation in Hinblick auf Security / OAuth und JWT, aber vielleicht ist das ein Thema, das ich selber im Laufe des nächsten Jahres angehen kann.

w-jax 2016 logoTreffen Sie Michael Simons auf der W-JAX 2016

Die Keynote Keine Magie: Individuelle Spring-Boot-Module wird am Dienstag, 10. November, ab 14.30 Uhr im Saal “Barcelona” stattfinden.

Abstract:
Rund um Spring Boot hat sich ein Ökosystem von „Startern“ entwickelt: Module, die automatische Konfiguration und Abhängigkeiten mitbringen und dabei helfen, vollständige Anwendungen und Microservices zu modularisieren. Durch „opionated defaults“, die nur solange aktiv sind, wie man nicht selbst tätig wird, wird ein reibungsloser Start gewährleistet. In diesem Vortrag werde ich zeigen, dass dahinter keine Magie steckt, sondern ein sehr nachvollziehbarer, einfacher Automatismus, der auch für eigene Module sinnvoll genutzt werden kann. Während der Demo wird ein individueller Dialekt für die Templatesprache Thymeleaf entwickelt, der mit einem Spring-Boot-Starter-Modul zur Verfügung gestellt wird.

 

michael-simonsMichael Simons ist Software-Architekt (CPSA-F) bei ENERKO Informatik in Aachen und entwickelt dort GIS-, EDM- und Vertriebsmanagement-Systeme für Stromnetzbetreiber und Energielieferanten. Michael ist Mitgründer der Euregio JUG und schreibt über ihre Entwicklung und andere Dinge unter info.michael-simons.eu. Auf Twitter schreibt er als @rotnroll666.

Geschrieben von
Dominik Mohilo
Dominik Mohilo
Dominik Mohilo studierte Germanistik und Soziologie an der Goethe-Universität in Frankfurt. Seit 2015 ist er Redakteur bei S&S-Media.
Kommentare

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht.