Frühling 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 umfassende Überarbeitung des Frameworks. Ich bin sehr glücklich, die neuen Funktionen im Spring-Framework zu sehen.

Spring 5 Funktionen

Die Funktionen von Spring 5 können grob in folgende Kategorien unterteilt werden:

  • Java-Basissupport
  • Kern-API-Verbesserungen
  • Spring Web MVC-Verbesserungen
  • Spring WebFlux
  • Funktionale Programmierung mit Kotlin-Unterstützung
  • Verbesserungen bei Tests
  • Unterstützung für veraltete Funktionen und entfernte Pakete

Java-Basissupport

  • 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 mit Java EE 8 kompatibel. Daher können wir Servlet 4.0, Bean Validation 2.0, JPA 2.2 in unseren Anwendungen verwenden. Es ist auch möglich, ihre älteren Versionen zu nutzen, 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+.

I really like that spring 5 is trying to catch up to the latest version of different technologies.

Kern-API-Verbesserungen

  • Non-null-API-Deklaration auf Paketebene. Nullable-Argumente, Felder und Rückgabewerte sind explizit mit der Annotation @Nullable versehen.
  • Dateioperationen werden über NIO 2-Streams durchgeführt, d. h. ohne FileInput/Output Stream. Dies ist eine erhebliche Verbesserung und Leistungssteigerung für dateibasierte Anwendungen.
  • Spring Framework 5.0 wird mit seiner eigenen Commons Logging-Brücke geliefert; spring-jcl anstelle von Standard Commons Logging.
  • Unterstützung für die Bereitstellung von Spring-Komponenteninformationen über die Indexdatei „META-INF/spring.components“ anstelle von Classpath-Scans. Dies verbessert die Startzeit erheblich, insbesondere bei großen Spring-Projekten mit vielen Spring-Komponenten. Für Entwickler ist es ebenfalls vorteilhaft, da wir direkt in bestimmten Dateien nach dem Anwendungseinstiegspunkt suchen können, anstatt durch das gesamte Classpath zu suchen.

Verbesserungen für Spring Web MVC

Das Spring MVC-Modul wurde im Hinblick auf die Verwendung der neuesten Java EE-Technologien grundlegend überarbeitet. Einige der wichtigsten Verbesserungen sind:

  • Vollständige Unterstützung der Servlet 3.1-Signatur in von Spring bereitgestellten Filter-Implementierungen.
  • Unterstützung für das Servlet 4.0 PushBuilder-Argument in Spring MVC-Controllermethoden.
  • MaxUploadSizeExceededException für das Servlet 3.0-Multipart-Parsing auf gängigen Servern.
  • Einheitliche Unterstützung für gängige Medientypen durch den MediaTypeFactory-Delegaten.
  • 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 aus Spring MVC-Controllermethoden.
  • Unterstützung für ResponseStatusException als programmatische Alternative zu @ResponseStatus.

Spring WebFlux

Spring WebFlux ist das neue Modul, es handelt sich um eine Alternative zum Modul spring-webmvc und basiert auf dem reaktiven Framework. Dieses Modul wird verwendet, um vollständig asynchrone und nicht blockierende Anwendungen auf der Ausführungsplattform des Ereignisschleifenmodells zu erstellen.

  • Reaktive Infrastruktur in spring-core wie Encoder und Decoder zum Codieren und Decodieren von Streams von Objekten.
  • @Controller-Stil, annotationsbasiertes Programmiermodell, ähnlich wie in Spring MVC, jedoch unterstützt in WebFlux und ausgeführt auf einem reaktiven Stapel.
  • Neuer WebClient mit einer funktionalen und reaktiven API für HTTP-Aufrufe, vergleichbar mit dem RestTemplate, jedoch über eine fließende API und auch herausragend in nicht blockierenden und Streaming-Szenarien auf Basis der WebFlux-Infrastruktur.

Funktionale Programmierung mit Kotlin-Unterstützung

Spring 5 unterstützt jetzt auch die Kotlin-Programmierung. Dies ist ein großer Schritt zur Unterstützung der funktionalen Programmierung, ähnlich wie Java sich ebenfalls in Richtung funktionaler Programmierung bewegt.

  • Unterstützung für Null-sichere API
  • Unterstützung für Kotlin-immutable Klassen mit optionalen Parametern und Standardwerten.
  • Die Nutzung von Kotlin-Reified-Typparametern, um die explizite Angabe der Klasse für Serialisierung/Deserialisierung in verschiedenen APIs wie RestTemplate oder WebFlux APIs zu vermeiden.
  • Unterstützung für den Kotlin-Autowired-Konstruktor mit optionalen Parametern.
  • Kotlin-Nullsicherheitsunterstützung für @Autowired/@Inject und @RequestParam/@RequestHeader/etc-Annotationen.

Verbesserungen im Testen

  • Unterstützung für JUnit 5
  • Unterstützung für die parallele Ausführung von Tests 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 wurden entfernt. Das bedeutet, wenn Sie Spring 5 verwenden möchten, müssen Sie auch Hibernate 5 verwenden.
  • Unterstützung für alte Technologien Portlet, Velocity, JasperReports, XMLBeans, JDO, Guava wurde eingestellt. Wenn Sie eine davon verwenden, migrieren Sie entweder zu anderen Technologien oder bleiben Sie bei Spring 4.

Das war alles für einen schnellen Überblick über die Funktionen von Spring 5. Referenz: Spring GitHub-Dokumentation

Source:
https://www.digitalocean.com/community/tutorials/spring-5