1
.
10
.
2014

Die Spring Master Class in Berlin

Eberhard Wolff zeigt wie’s geht

berlin

Vom 24. bis 26. September 2014 fand erstmalig eine Schulung im Themenumfeld “Spring Framework” statt, die sich abseits der Platzhirsche VMWare und FastLane zu platzieren versucht. Angeboten und organisiert wird das hands-on Training von der Firma Gedoplan, die den Spring Evangelisten und Java Champion Eberhard Wolff für diese Veranstaltung in Berlin gewinnen konnte.

Wie der Titel bereits andeutet, zielen die Inhalte auf die Vermittlung von weiterführenden Konzepten in der Verwendung des Spring Framework ab. Ein guter Ausgangspunkt ist der Kenntnisstand der Spring Core Schulung und ca. zwei bis drei Projekte Praxiserfahrung. Diese helfen dabei, die verschiedenen Fragestellungen, die im Verlauf der Schulung aufgrund der extremen Flexibilität des Frameworks entstehen, aufzugreifen und einzuordnen.

Da Spring seiner Umgebung und dem Entwickler quasi keine Bedingungen auferlegt, haben Projekte, die darauf basieren, anfangs ein sehr hohes Entwicklungstempo und viel Prototyping Charakter, da viel ausprobiert wird. Ab einem gewissen Punkt kann diese Flexibilität zur Last werden wenn sich das Projekt hin zu einem Mix aus vielen verschiedenen Ansätzen entwickelt hat. Um dem entgegen zu wirken, empfiehlt es sich in einem frühen Stadium ein paar Konventionen festzulegen, die in der Regel wiederum von Spring belonht werden. Zu diesen Konzepten gehören ansich ganz natürliche und selbsterklärende Maßnahmen, deren eigentliche Macht spielen dann AOP Techniken und verschiedene Scanning Techniken aus.

So erarbeitete der Lehrgang zum Beispiel in einigen Übungen ein System das verschiedenen Ansätzen folgt, um eine 3 Tier Anwendung nicht nur in ihre technischen Schichten zu strukturieren sondern auch fachlich also vertikal in verschiedene Slices aufzuteilen. Über einfache aber oft unterschätzte Hilfsmittel wie Facaden oder die Sichtbarkeit von Klassen und Interfaces definierten wir klare Schnittstellen, ohne dass wir aufwendig mehrere jar Module erstellen mussten. Methoden zur Einbettung der Komponenten in unterschiedlichen Umgebungen zeigte, wie leicht mit Spring Boardmitteln zum Beispiel eine Anwendung für den Betrieb in einerseits einem JEE Application Server aufgesetzt werden konnte, mit wenigen Handgriffen aber auch ohne Probleme in einem Tomcat oder einer normalen SE jar runtime auskommen konnte, und das nur durch geschickte Strukturierung der Konfiguration. Das selbe Konzept greift natürlich für Spring-basierte JUnit/TestNG Tests, für die normalerweise nicht produktive Datenbanken verwendet werden. Also wird kurzerhand ein Teil der Konfiguration ausgetauscht. Konventionen und Struktur sind für solche Ansätze unerlässlich.

Wie bei Spring üblich gab es in allen besprochenen Ansätzen kein richtig oder falsch. Der Spring XML Konfiguration mit ihren mächtigen Namespaces wurde genauso Rechnung getragen wie der Möglichkeit, das gesamte Setup in reinem Java zu definieren. Als wichtigster Punkt wurde aber angeführt, sich für bestimmte Konzepte zu entscheiden und an diesen dann auch, so weit wie es geht, festzuhalten.

Ein neuer Big Player im spring.io Portfolio kam in dieser Schulung ebenfalls nicht zu kurz. DasSpring Boot Projekt vereint sehr viele Best Practices und sinnvolle Konventionen aus über 10 Jahren Spring unter einer Haube und löst so eine kleine Revolution in der Spring Welt aus. Der Spring Boot Aha Effekt für Entwickler wird deutlich, wenn man das Parade Code Beispiel von der Projekt Website unter die Lupe nimmt. Mit diesen wenigen Zeilen Code kann man ein normales jar File erzeugen, aus dem eine komplette Spring Webanwendung erwachsen kann:

github:8868fff2f27e4e7e636d

Diese Java Klasse hat fast genauso viele Zeilen Annotationen wie Code Zeilen. Das bringt die Spring Boot Magie ins Spiel. Im Hintergrung sorgen eine Vielzahl an Scannern, JavaConfig Klassen und “Good Guesses” für einen reibungslosen Start der Anwendung. Welche Java Libraries generell in der Applikationen verwendet werden sollen, gibt der Entwickler wie gewohnt per Maven oder Gradle an, hat dabei aber nun die Möglichkeit, auf vorgefertigte Spring Boot Dependencies zuzugreifen, die wie ein Plugin System automagisch Features hinzufügen, teilweise sogar ohne dass eine Zeile an der Klasse geändert werden muss. Wer noch mehr Details über Spring Boot erfahren möchte, dem sei dieser Spring Boot Artikelempfohlen.

Spring Boot macht hierbei vieles vor, was an vielen Stellen immer wieder angesprochen wird, Konventionen und Konsistenz erleichtern viele Dinge im täglichen Umgang mit Spring.

Hier noch einmal die besprochenen Themen in der Kurzzusammenfassung:

  • Infrastruktur Konfiguration
  • Pattern und Best Practices aus großen Spring Anwendungen
  • Spring AOP und AspectJ Support
  • weitere Spring Projekte wie  Integration, Security, Web Services und Batch im Einsatz

Zusammenfassend lässt sich die Schulung thematisch als durchweg gelungen und sehr gut organisiert bezeichnen. Auch wenn hier und da vielleicht nicht das letzte Spring Interna herausgequetscht wurde (was auch nicht Ziel dieser Schulung ist), so boten die drei Tage ein sehr gutes Hands-On Training. Für alle, die wissen wollen, wie große und komplexe Spring Anwendungen bereits in den Kinderschuhen richtig auf den Weg gebracht werden können, oder was bei einer Konsolidierung am ehesten angegangen werden sollte um am Ende des Tages ein einfach zu konfigurierendes und dennoch flexibles Stück Software ausliefern zu können, ist diese Schulung genau das Richtige.

Benjamin
Software Engineer & Fellow