Java Magazin 11/14

Spring Boot: Boot your own infrastructure

Autor:

Zusammen mit dem Microservices-Hype ist auch Spring Boot zum Gesprächsthema geworden, dabei ist das Projekt viel mehr als nur ein Microservices-Framework oder gar ein klassisches Rapid-Application-Development-Tool. In diesem Artikel wird in fünf Schritten gezeigt, wie man einen eigenen Spring Boot Starter schreibt, um genau die Infrastruktur zu booten, die der eigene Typ Anwendung benötigt – ein sehr nützliches Werkzeug auch im Enterprise-Umfeld, in dem man üblicherweise viele Anwendungen eines bestimmten Typs hat, proprietäre Technologien verwendet werden und man firmenweit gleiche Anforderungen bezüglich Sicherheit, Monitoring und Kommunikation hat.

In der letzten Ausgabe des Java Magazins haben wir unsere Sicht der Dinge bezüglich Java-Batch-Architekturen dargelegt und dabei auch unseren eigenen Spring Boot Starter vorgestellt – keine Angst, um Batch soll es in diesem Artikel nicht gehen. Aber da das Erstellen dieses Starters sehr einfach war, möchte ich hier das Vorgehen bei der Erstellung so eines Starters beschreiben. Unser Batch Starter soll dabei nur ab und zu als Beispiel dienen. Zunächst soll uns das Wie interessieren, für das Warum ist am Ende des Artikels noch Platz. Ein Spring Boot Starter ist ein einfaches Maven-Projekt mit JAR-Packaging, das derjenige, der den Starter verwenden möchte, einfach als Dependency hinzufügt. Dies sind die fünf Schritte für den Bau eines Spring Boot Starters:

1. Wähle eine Basis aus bereits existierenden Startern.
2. Schreibe die eigene Konfiguration und lasse sie automatisch dem ApplicationContext hinzufügen (Auto-Configuration).
3. Mache den Starter konfigurierbar durch die Verwendung von Properties.
4. Mache den Starter erweiterbar durch überschreibbare Default-Implementierungen.
5. Mache den Starter abhängig von Klassenpfad und Ressourcen. Schauen wir uns diese Schritte nun der Reihe nach an.
1. Wähle eine Basis aus bereits existierenden Startern
Es gibt keinen Grund, auf einer grünen Wiese zu starten – auch wenn das möglich wäre. Spring Boot bringt eine Menge von existierenden Startern mit sich, und wann immer es Sinn ergibt, sollte man eher diese verwenden als
selbst einen zu schreiben. Und wenn man die Funktionalität eines Starters im eigenen Starter benötigt, so kann man diesen einfach als Dependency heranziehen (Listing 1). Wir wollen unseren eigenen Batchserver mit REST-Endpoints schreiben, also holen wir uns den spring-boot-starter-web ins Boot, der Spring MVC lauffähig konfiguriert und außerdem dafür sorgt, dass wir unseren Server standalone als JAR starten können. Dann benötigen wir eine Spring-Batch-Konfiguration, die uns spring-boot-starter-batch liefert. Wir wollen auf eine gepoolte JDBC DataSource zugreifen, dafür nutzen wir spring-boot-starter-jdbc, und schließlich wollen wir die Monitoring-Fähigkeiten von Spring Boot Actuator in jedem unserer Batchserver und fügen deshalb eine Dependency zu spring-boot-starter-actuator hinzu. (…)

Vollständiger Artikel