© ActiveLines/Shutterstock.com, © S&SMedia/Bianca Röder
Spring 5 Minor-Releases

Eine entschlossene Weiterentwicklung


Spring 5.0 ist nun gut drei Jahre alt. Die Architekten des Frameworks ließen diese Zeit mit etlichen Neuerungen und zwei Minor-Releases nicht ungenutzt. Diese wollen wir im folgenden Beitrag näher betrachten.

Als wesentlichen Grund für den Erfolg des Spring Frameworks könnte man die stete Wachsamkeit eines wohlwollenden Diktators in Gestalt des Zerberus Jürgen Höller ansehen (der Fairness halber: Es ist eher ein wohlwollendes Gremium). Dieser Erfolg drückt sich neben spektakulären Major-Releases, die z. B. im Fall von Spring 5 entschlossen das Tor in eine neue reaktive Ära aufstoßen, eben auch im organischen Wachsen und Hinzufügen neuer Minor-Releases aus.

Rückblick auf Spring 5

Beginnen wir zunächst mit einem kleinen Rückblick [1]: Neben der Verwandlung in ein reaktives Framework gab es in Spring 5 etliche ganz wichtige Neuerungen. Zuerst ist hier die Aufnahme einer Java 8+ Baseline zu nennen, d. h. konkret, dass die Codebase des Frameworks nun intern Java 8 mit Lambdaausdrücken, Collection Streams usw. nutzt. Des Weiteren ist auch die verbesserte Konstruktor-/Methodenparameterintrospektion anzuführen. Die Framework APIs arbeiten jetzt mit Java-8-Typen wie Executable und CompleteableFuture. Zu guter Letzt sind viele Framework-Interfaces mit Java 8-Defaultmethoden ausgerüstet worden. Wichtig ist auch die Kotlin-Unterstützung in Spring 5. Inspiriert von der Praxis, in Kotlin mit größtmöglicher Null Safety [2] zu arbeiten, wurden Nullability Validations eingeführt und das Framework wurde so noch robuster gemacht. Ein weiteres, noch nicht so bekanntes neues Feature ist die programmatische Registrierung von Beans. Anstatt Beans in @Configuration-Klassen zu registrieren, können diese jetzt durch explizite Aufrufe, auch mit Angabe von Abhängigkeiten, im DI-Container instanziiert werden (was man auch als eine performantere und einsehbarere Alternative für @Lazy-Beans ansehen könnte):

GenericApplicationContext ctx = new GenericApplicationContext(); ctx.registerBean(Foo.class); ctx.registerBean(Bar.class, () -> new Bar(ctx.getBean(Foo.class));

Natürlich ist die Performance einer Applikation ein entscheidendes Argument für die Wettbewerbsfähigkeit eines Frameworks. Auch hier wurden in Spring 5 hinter den Kulissen etliche Verbesserungen vorgenommen. Zu nennen wäre z. B. die Möglichkeit, einen Build-time Annotation Processor zu nutzen, der Annotationen erfasst und die erfassten Klassen in den Ordner META-INF/spring.components des jeweiligen JAR ablegt. Es wurden in ...

Neugierig geworden?

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang