Suche
Interview mit Michael Simons

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

Dominik Mohilo, Michael Simons

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.

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.

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.
Michael Simons
Michael Simons
Michael Simons arbeitet als Senior Consultant bei innoQ Deutschland. Er ist Mitglied des NetBeans Dream Teams und Gründer der Euregio JUG. Michael schreibt auf seinem Blog über Java, Spring und Softwarearchitektur. Auf Twitter ist er unterwegs als @rotnroll666, wo er sich unter anderem mit Java, Musik und den kleineren und größeren Problemen als Ehemann und Vater von zwei Kindern beschäftigt. Im Januar 2018 wird Michaels Buch "Spring Boot -- Moderne Softwareentwicklung im Spring-Ökosystem" im dpunkt.verlag erscheinen. Das Buch ist bereits heute unter springbootbuch.de vorbestellbar. Es behandelt Spring Boot 2 und das neue, reaktive Programmierparadigma von Spring 5 ebenso wie Spring-Grundlagen und spricht damit erfahrene Spring-Entwickler wie auch Spring-Neulinge an. Die Schaubilder in diesem Artikel stammen ebenso aus dem Buch, genau wie einige der gezeigten Beispiele. Der Code ist ist bereits jetzt auf GitHub verfügbar.
Kommentare

Schreibe einen Kommentar

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