VMware Tanzu passt Tools an Spring-Framework 6.0 und Native Image an

Im Zuge von Spring 6.0 erscheinen aktualisierte Releases von Security, Authorization Server, REST Docs, Web Services sowie Spring for Apache Kafka und RabbitMQ.

Lesezeit: 4 Min.
In Pocket speichern
vorlesen Druckansicht Kommentare lesen

(Bild: kram9/Shutterstock.com)

Von
  • Matthias Parbel

Nachdem VMware Tanzu seine ursprünglich zum Jahresende geplante Konferenz SpringOne kürzlich auf Januar 2023 verschoben hat – und sie auch nur als Online-Event ausrichten wird –, gibt das Spring-Entwicklungsteam nun sukzessive die neuen Major Releases zahlreicher Tools aus dem Ökosystem frei. Neue Versionen stehen ab sofort unter anderem von Spring Security, Spring Authorization Server, Spring REST Docs, Spring Web Services sowie Spring for Apache Kafka und Spring for RabbitMQ parat.

Den offiziellen Startschuss für Spring Framework 6.0 hatte Jürgen Höller am 16. November verkündet, die allgemeine Verfügbarkeit (General Availability – GA) von Spring Boot 3.0 steht hingegen noch aus. Das Kompilieren von Spring-6-Anwendungen setzt jetzt Java 17 voraus, außerdem wechselt das Framework auf Jakarta EE 9+, sodass sich Entwicklerinnen und Entwickler mit einigen Breaking Changes und Anpassungen von Dependencies konfrontiert sehen dürften. Eine weitere bedeutende Neuerung ist die Möglichkeit, mit der GraalVM und Native Image JVM-basierte Programme nun Ahead of Time (AOT) zu kompilieren. So lässt sich ein Binary zu erzeugen, das nativ auf dem jeweiligen Betriebssystem startet.

Mit Anpassungen an die Neuerungen im Framework hat das Spring-Team nun unter anderem Spring Security aktualisiert. Version 6.0 ist vollständig kompatibel zu Native Image und dem AOT-Compiler. Bei der Migration auf das neue Security-Release sollten Entwicklerinnen und Entwickler aber einige Breaking Changes beachten, die unter anderem den Wegfall einer Reihe von bereits als deprecated (veraltet) gekennzeichneten Methoden betreffen, darunter etwa setTokenFromMultipartDataEnabled aus dem CsrfWebFilter sowie tokenFromMultipartDataEnabled aus der Java-Konfiguration. Ebenfalls entfernt hat das Team die als unsicher geltende Encryptors.querableText(CharSequence,CharSequence). Zum Verschlüsseln von Werten sollen Entwicklerinnen und Entwickler stattdessen auf die Optionen des Data Storage zurückgreifen. Weitere Details sowie Links zu einer Migrationshilfe finden sich im Blogbeitrag zu Spring Security 6.0 und 5.8.

Der auf Spring Security 6.0 aufbauende Spring Authorization Server hat die Hauptversion 1.0 erreicht und liegt ebenfalls auf Maven Central zum Download bereit. Das im Frühjahr 2020 gestartete Projekt implementiert insbesondere die wichtigen Spezifikationen OAuth 2.1 und OpenID Connect 1.0.

Im Hinblick auf SOAP-Applikationen, die Entwicklerinnen und Entwickler mit Spring Boot 3.0 bauen möchten, liefern die neuen Spring Web Services in Version 4.0.0 die erforderlichen Voraussetzungen. Weitere Details sowie der Sourcecode finden sich im GitHub-Repo des spring-ws-Projekts.

Unterdessen eröffnet das Update der Spring REST Docs auf Version 3.0.0 neue Optionen, Abfrage- und Formularparameter jeweils separat zu dokumentieren, anstatt wie bisher auf Request-Parameter zurückgreifen zu müssen, die beide Parametervarianten vermischten. Darüber hinaus publizieren die Spring REST Docs nun auch die wichtigen Bill-of-Materials (BOM) als spring-restdocs-bom unter org.springframework.restdocs:spring-restdocs-bom.

Über die Anpassungen an Native Image und Java 17 hinaus sind in die neuen 3.0-Versionen von Spring for Apache Kafka und Spring for RabbitMQ eine Reihe weiterer Neuerungen eingeflossen. So sollen beispielsweise Bill-of-Material-POMs Entwicklerinnen und Entwicklern beim Dependency-Management helfen. In Spring for Apache Kafka lässt sich jetzt zudem ein einziger globaler EmbeddedKafkaBroker auch über verschiedene Testklassen hinweg einsetzen.

Die weiteren Änderungen betreffen beispielsweise die @KafkaListener und @RabbitListener. So lässt sich in Spring for Apache Kafka jetzt eine benutzerdefinierte Korrelationskopfzeile verwenden, die in jeder Antwortnachricht wiedergegeben wird. In Spring for RabbitMQ wurde unter anderem der Batch-Messaging-Adapter angepasst, damit Batch Listener nun sowohl Collection<?> als auch List<?> konsumieren können. Eine komplette Übersicht aller Neuerungen liefern der Blogbeitrag sowie die jeweils individuelle Dokumentation zu Spring for Apache Kafka 3.0 und Spring for RabbitMQ/AMQP 3.0.

(map)