Überblick über Spring 5
Spring 5 wurde Ende 2017 veröffentlicht. Spring 5 bringt ein massives Update für das Spring-Framework. Spring 4 wurde 2013 veröffentlicht, daher erwartete jeder eine große Überarbeitung des Frameworks. Ich bin sehr froh, die neuen Funktionen im Spring-Framework zu sehen.
Funktionen von Spring 5
Die Funktionen von Spring 5 können grob in folgende Kategorien unterteilt werden:
Java-Baseline-Unterstützung
- Spring 5 läuft auf Java 8, sodass Spring-Code Lambda-Ausdrücke nutzen kann, um die Lesbarkeit des Codes zu verbessern.
- Spring 5 unterstützt auch Java 9, sodass wir unsere Anwendungen auch auf einer modulbasierten Architektur erstellen können.
- Spring 5 unterstützt Java EE 7 und ist auch kompatibel mit Java EE 8. So können wir Servlet 4.0, Bean Validation 2.0, JPA 2.2 in unseren Anwendungen verwenden. Wir können auch deren ältere Versionen verwenden, d.h. Servlet 3.1, Bean Validation 1.1, JPA 2.1.
- Bevorzugte Serverversionen für Spring 5-Anwendungen sind Tomcat 8.5+, Jetty 9.4+ und WildFly 10+.
Mir gefällt wirklich, dass Spring 5 versucht, mit den neuesten Versionen verschiedener Technologien Schritt zu halten.
Verbesserungen der Core-API
- Non-null-API-Deklaration auf Paketebene. Nullable Argumente, Felder und Rückgabewerte sind explizit mit der @Nullable-Annotation annotiert.
- Dateioperationen werden über NIO 2-Streams durchgeführt, d.h. kein FileInput/OutputStream. Dies ist eine großartige Verbesserung und Leistungssteigerung für dateibasierte Anwendungen.
- Spring Framework 5.0 kommt mit seiner eigenen Commons Logging-Brücke; spring-jcl statt standard Commons Logging.
- Unterstützung für die Bereitstellung von Spring-Komponenteninformationen über die Indexdatei „META-INF/spring.components“ anstelle von Klassenpfad-Scanning. Dies wird die Startzeit stark verbessern, wenn Sie ein großes Spring-Projekt und viele Spring-Komponenten haben. Es wird auch für Entwickler besser sein, da wir direkt in die angegebenen Dateien schauen können, um den Einstiegspunkt der Anwendung herauszufinden, anstatt durch alle Klassenpfad-Dateien zu suchen.
Verbesserungen von Spring Web MVC
- Vollständige Unterstützung der Servlet 3.1-Signatur in Spring-bereitgestellten Filterimplementierungen.
- Unterstützung für das Servlet 4.0 PushBuilder-Argument in Spring MVC-Controllermethoden.
- MaxUploadSizeExceededException für Servlet 3.0-Multipart-Parsing auf gängigen Servern.
- Einheitliche Unterstützung für gängige Medientypen durch die MediaTypeFactory-Delegation.
- Datenbindung mit unveränderlichen Objekten unter Verwendung von Kotlin, Lombok, @ConstructorProperties.
- Unterstützung für die JSON Binding API als Alternative zu Jackson und GSON.
- Unterstützung für Reactor 3.1 Flux und Mono sowie RxJava 1.3 und 2.1 als Rückgabewerte von Spring MVC-Controllermethoden.
- Unterstützung für ResponseStatusException als programmatische Alternative zu @ResponseStatus.
Spring WebFlux
Spring WebFlux ist das neue Modul, es ist eine Alternative zum spring-webmvc-Modul und basiert auf einem reaktiven Framework. Dieses Modul wird verwendet, um vollständig asynchrone und nicht blockierende Anwendungen basierend auf dem Event-Loop-Ausführungsmodell zu erstellen.
- Reaktive Infrastruktur in spring-core wie Encoder und Decoder zum Kodieren und Dekodieren von Objektströmen.
- @Controller-Stil, annotierungsbasiertes Programmiermodell, ähnlich wie bei Spring MVC, aber unterstützt in WebFlux, ausgeführt auf einem reaktiven Stack.
- Neuer WebClient mit funktionaler und reaktiver API für HTTP-Aufrufe, vergleichbar mit dem RestTemplate, aber durch eine fließende API und auch hervorragend in nicht blockierenden und Streaming-Szenarien basierend auf der WebFlux-Infrastruktur.
Funktionale Programmierung mit Kotlin-Unterstützung
Spring 5 unterstützt jetzt auch die Kotlin-Programmierung. Dies ist ein großer Schritt in Richtung Unterstützung der funktionalen Programmierung, genau wie Java sich auch in Richtung funktionale Programmierung bewegt.
- Unterstützung für Null-Safe API
- Unterstützung für Kotlin-unveränderliche Klassen mit optionalen Parametern und Standardwerten.
- Nutzung von Kotlin-reifizierten Typ-Parametern, um das explizite Angeben der Klasse zur Verwendung für Serialisierung/Deserialisierung in verschiedenen APIs wie RestTemplate oder WebFlux-APIs zu vermeiden.
- Unterstützung für Kotlin autowired Konstruktor mit optionalen Parametern.
- Kotlin Null-Sicherheitsunterstützung für @Autowired/@Inject und @RequestParam/@RequestHeader/etc. Annotationen.
Testverbesserungen
- Unterstützung für JUnit 5
- Unterstützung für parallele Testausführung im Spring TestContext Framework
Veraltete Unterstützung und entfernte Pakete
- Entfernte Pakete beans.factory.access, jdbc.support.nativejdbc, mock.staticmock aus dem spring-aspects-Modul.
- Entfernte Pakete web.view.tiles2 und orm.hibernate3/hibernate4 fallen weg. Das bedeutet, wenn Sie Spring 5 verwenden möchten, müssen Sie auch Hibernate 5 verwenden.
- Eingestellte Unterstützung für alte Technologien Portlet, Velocity, JasperReports, XMLBeans, JDO, Guava. Wenn Sie eine davon verwenden, migrieren Sie entweder zu anderen Technologien oder bleiben Sie bei Spring 4.
Das ist alles für einen schnellen Überblick über die Funktionenund Neuerungen von Spring 5.