Entwicklung & Code
Spring Framework 7 bringt neues Konzept für Null Safety und setzt auf Java 25
VMWare Tenzu hat Spring Framework 7 veröffentlicht. Das quelloffene Framework für die Java-Plattform bringt im aktuellen Release unter anderem neue Funktionen für verbesserte Resilienz, Null Safety, API-Versionierung und Java-Messaging.
Weiterlesen nach der Anzeige
Beim JDK zielt Spring Framework 7 auf das aktuelle Java 25, und für Enterprise-Java ist Jakarta EE 11 die Basis. Für das Zusammenspiel mit Kotlin setzt es auf Version 2.2 der Programmiersprache, und für Unit-Tests arbeitet es mit JUnit 6.0 zusammen.
Null Safety mit JSpecify
Um Fehler durch den Umgang mit Null-Pointern zu verhindern – der Erfinder der Null-Referenz Tony Hoare hat sich 2009 für den „Milliarden-Dollar-Fehler“ entschuldigt –, setzt das aktuelle Spring Framework auf JSpecify. Damit gelten die bisherigen Annotationen nach dem JSR 305 (Java Specification Request) als überholt (deprecated).
JSpecify bietet Annotationen, die Null-Pointer-Fehler verhindern helfen: @Nullable zeigt an, dass der Wert potenziell null sein kann, während mit @NonNull annotierte Typen niemals null sein dürfen.
Weitere Details zu den Vorteilen von JSpecify zeigt ein Beitrag auf dem Spring-Blog.
Resilienz für Spring-Anwendungen
Weiterlesen nach der Anzeige
Das Spring-Team hat neue Features für die Resilienz eingeführt, die das nun in den Ruhestand geschickte Projekt Spring Retry ersetzen. In Spring Framework 7 sind die Features in org.springframework.core.retry enthalten, das unter anderem RetryTemplate und RetryPolicy enthält.
Die Annotation @Retryable legt unter anderem fest, wie oft und mit welcher Verzögerung die Anwendung versuchen soll, einen fehlgeschlagenen Aufruf zu erneuern, wie folgendes Beispiel aus der Spring-Dokumentation zeigt:
@Retryable(
includes = MessageDeliveryException.class,
maxAttempts = 5,
delay = 100,
jitter = 10,
multiplier = 2,
maxDelay = 1000)
public void sendNotification() {
this.jmsClient.destination("notifications").send(...);
}
Ob die Resilienzfunktionen greifen oder ignoriert werden, lässt sich über die Konfiguration @EnableResilientMethods festlegen.
API-Versionierung, Java-Messaging und mehr
Spring Framework 7 führt ein neues Konzept für die API-Versionierung ein. Entwicklerinnen und Entwickler konfigurieren, wie die API-Version aufgelöst und validiert wird. Clients können die API-Version bei Anfragen an den RestClient, WebClient und für HTTP-Clients festlegen. Auch im Testing lässt sich die Versionierung mit dem WebTestClient nutzen. Ein Beitrag auf dem Spring-Blog bringt eine detaillierte Ausführung zur API-Versionierung.
Spring bekommt im aktuellen Release zudem den JMSClient, der Funktionen zum Versenden und Empfangen von Nachrichten über die JMS-API (Jakarta Messaging) bietet.
Nennenswert ist zudem noch der neue RestTestClient als Variante des WebTestClient, der den RestClient um ein Testing-Interface erweitert. Außerdem gibt es mit dem Interface BeanRegistrar eine neue Methode, um Beans zu registrieren.
Weitere Neuerungen und einige entfernte oder als überholt markierte Funktionen lassen sich den Release Notes zu Spring 7 entnehmen.
(rme)