Spring Boot 3.0 kommt mit Native Image Support – Die Neuerungen zusammengefasst

17.02.2023

Spring Boot hat sich als eines der wichtigsten Frameworks für die Entwicklung von Java-Anwendungen etabliert. Es wurde entwickelt, um die Erstellung von produktionsbereiten Anwendungen zu vereinfachen und bietet eine Vielzahl von Funktionen, die Entwicklern das Leben erleichtern.

Spring Boot Logo

(Spring Boot Logo, Quelle: https://twitter.com/springboot)

 

Eine neue Major Version des Frameworks wurde am 24. November 2022 veröffentlicht. In diesem Blogbeitrag werfen wir einen zusammenfassenden Blick auf die Neuerungen der Version 3.0.

Versionsupgrades

Spring Boot 3.0 wird in der Praxis in Verbindung mit zahlreichen anderen Abhängigkeiten eingesetzt. Updates zu diesen Abhängigkeiten bedeuten für eine Spring Boot 3.0 Anwendung das Umsetzen neuer Migrationsanforderungen, Berücksichtigung bei der Implementierung, aber auch eine Reihe von neuen Features.

 

Java

Spring Boot setzt die Version Java 17 als Minimalversion voraus. Sollte sich eine Anwendung noch in der Version Java 8 oder 11 befinden, muss die JDK erstmal aktualisiert werden, um auf die neue Spring Boot Version zu migrieren. Die Nutzung mit Java 19 wurde in dieser Version getestet und die Möglichkeit bestätigt.

 

GraalVM

Auch bei GraalVM wird eine Anforderung an eine minimale Version gestellt. Die Version der Laufzeitumgebung muss sich mindestens auf 22.3 befinden.

 

Spring Framework

Spring Boot baut auf das Spring Framework auf. Die neue Version erfordert die Spring Framework Version 6.

 

Spring Projekte

Im Hinblick auf Versionen bei Abhängigkeiten und Bibliotheken, die im Zusammenhang mit Spring Boot 3.0 genutzt werden, hat sich viel verändert. Im selben Release der neuen Version von Spring Boot wurden auch andere Projekte von Spring aktualisiert, darunter Spring Security 6.0, Spring Kafka 3.0 und Spring Session 3.0. Eine Liste aller neuen Versionen der Spring Projekte ist in der Release Notes zu finden.

 

Von Java EE zu Jakarta EE

Eine Migration von Java EE zur Jakarta EE API für alle Abhängigkeiten wurde in diesem Release umgesetzt. Wo möglich, wurden dabei Jakarta EE 10 kompatible Abhängigkeiten ausgewählt. Eine Liste zu den genutzten Jakarta Versionen ist in den Release Notes zu finden.

 

Third Party JARs

Auch das Upgrade der JAR-Dateien von sämtlichen Drittanbietern wurden zu diesem Zweck nicht vernachlässigt. Abhängigkeiten wie Kotlin 1.7.20, Log4j 2.18, Couchbase Client 3.4 oder ElasitcSearch Client 8.5 werden mit Spring Boot 3.0 unterstützt. Natürlich zählen dazu weitaus mehr als die Genannten. Eine von den Spring Boot-Entwicklern angefertigte Auflistung vervollständigt die Aufzählung. Sie ist in den Release Notes zu finden.

 

Neue Features

Folgend werden die wichtigsten neuen Features zusammengefasst, anfangend mit einem der interessantesten in dem neuen Release:

 

GraalVM Native Image Support (Spring Native)

Es ist nun möglich, Spring Boot 3.0-Anwendungen in GraalVM native Images zu konvertieren, was erhebliche Speicher- und Startzeitverbesserungen ermöglicht.

 

Log4j2-Verbesserungen

Log4j2-Support wurde mit neuen Erweiterungen aktualisiert, die eine profilabhängige Konfiguration, Environment Properties-Lookup und Log4j2-Systemproperties bieten.

 

Verbesserte @ConstructorBinding Detection

Bei Verwendung von konstruktorgebundenen @ConfigurationProperties ist die @ConstructorBinding-Annotation nicht mehr erforderlich, wenn die Klasse einen einzigen parametrisierten Konstruktor hat. Wenn diese mehr als einen Konstruktor hat, muss weiterhin @ConstructorBinding verwendet werden, um Spring Boot mitzuteilen, welchen Konstruktor es verwenden soll.

 

Micrometer-Updates

Spring Boot 3.0 unterstützt die neuen Observation APIs, die in Micrometer 1.10 eingeführt wurden. Die Tracing-Unterstützung wurde für Brave, OpenTelemetry, Zipkin und Wavefront hinzugefügt.

 

Prometheus-Support

Auto-Configuration für Prometheus Exemplars wurde hinzugefügt. Eine PUT-Anfrage an Prometheus Push Gateway kann beim Herunterfahren ausgeführt werden.

 

Elasticsearch Java Client

Auto-Configuration für den neuen Elasticsearch Java Client wurde eingeführt.

 

SpringBootTest mit Main Methods

Das @SpringBootTest-Annotation kann jetzt die Main-Methode jeder gefundenen @SpringBootConfiguration-Klasse verwenden, wenn sie verfügbar ist.

Zusätzlich zu diesen Änderungen gab es einige kleinere Tweaks und Verbesserungen. Zum Beispiel werden Hostnamen beim Start nicht mehr protokolliert, um Startup-Zeiten zu verbessern und der Support für Java’s SecurityManager wurde entfernt.

 

 

Zusätzliche Information

Ist man in der Situation eine bestehende Spring Boot Anwendung auf die neueste Version zu migrieren, ist das mit einem dafür vorgesehenen Migration Guide [2] möglich. Eine Alternative wäre bis zum Mai 2023 zu warten, denn für diesen Zeitraum steht die Veröffentlichung der Version 3.1 fest. [3]

 

Quellen:

[1] https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.0-Release-Notes

[2] https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.0-Migration-Guide

[3] https://spring.io/projects/spring-boot#support

Zurück zur Übersicht

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

*Pflichtfelder

*