Primavera 5

Spring 5 è stato rilasciato alla fine del 2017. Spring 5 porta un enorme aggiornamento al framework Spring. Spring 4 è stato rilasciato nel 2013, quindi tutti si aspettavano una revisione importante del framework. Sono molto felice di vedere le nuove funzionalità nel framework Spring.

Caratteristiche di Spring 5

Le caratteristiche di Spring 5 possono essere ampiamente divise nelle seguenti categorie:

  • Supporto di Base per Java
  • Miglioramenti dell’API Core
  • Miglioramenti di Spring Web MVC
  • Spring WebFlux
  • Programmazione Funzionale con Supporto Kotlin
  • Miglioramenti dei Test
  • Supporto Obsoleto e Pacchetti Rimossi

Supporto di Base per Java

  • Spring 5 gira su Java 8, quindi il codice spring può sfruttare le espressioni lambda per migliorare la leggibilità del codice.
  • Spring 5 supporta anche Java 9, quindi possiamo creare le nostre applicazioni anche su un’architettura basata su moduli.
  • Spring 5 supporta Java EE 7 ed è anche compatibile con Java EE 8. Possiamo utilizzare Servlet 4.0, Bean Validation 2.0, JPA 2.2 nelle nostre applicazioni. Possiamo anche utilizzare le loro versioni più vecchie, ovvero Servlet 3.1, Bean Validation 1.1, JPA 2.1.
  • Le versioni preferite per i server delle applicazioni Spring 5 sono Tomcat 8.5+, Jetty 9.4+ e WildFly 10+.

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

Miglioramenti all’API principale

  • Dichiarazione dell’API non nulla a livello di pacchetto. Gli argomenti, i campi e i valori restituiti nullabili sono esplicitamente annotati con l’annotazione @Nullable.
  • Le operazioni sui file vengono eseguite tramite flussi NIO 2, ovvero senza FileInput/Output Stream. Questa è una grande miglioramento e un aumento delle prestazioni per le applicazioni basate su file.
  • Spring Framework 5.0 ha il proprio ponte Commons Logging; spring-jcl invece dello standard Commons Logging.
  • Supporto per fornire informazioni sui componenti Spring attraverso il file di indice “META-INF/spring.components” anziché la scansione del classpath. Ciò migliorerà notevolmente il tempo di avvio se hai un grande progetto Spring e molti componenti Spring. Sarà anche migliore per gli sviluppatori, perché possiamo guardare direttamente nei file specificati per capire il punto di ingresso dell’applicazione anziché cercare in tutti i file del classpath.

Miglioramenti di Spring Web MVC

Il modulo Spring MVC ha subito una revisione importante nell’uso delle ultime tecnologie Java EE. Alcuni dei principali miglioramenti sono:

  • Supporto completo alle firme di Servlet 3.1 nelle implementazioni di Filter fornite da Spring.
  • Supporto per l’argomento PushBuilder di Servlet 4.0 nei metodi del controller Spring MVC.
  • MaxUploadSizeExceededException per il parsing multipart di Servlet 3.0 su server comuni.
  • Supporto unificato per i tipi di media comuni tramite delegato MediaTypeFactory.
  • Associazione dati con oggetti immutabili usando Kotlin, Lombok, @ConstructorProperties.
  • Supporto per l’API di associazione JSON come alternativa a Jackson e GSON.
  • Supporto per Reactor 3.1 Flux e Mono così come RxJava 1.3 e 2.1 come valori restituiti dai metodi del controller Spring MVC.
  • Supporto per ResponseStatusException come alternativa programmatica a @ResponseStatus.

Spring WebFlux

Spring WebFlux è il nuovo modulo, è un’alternativa al modulo spring-webmvc e si basa su un framework reattivo. Questo modulo è utilizzato per creare applicazioni completamente asincrone e non bloccanti costruite sul modello di esecuzione a loop di eventi.

  • Infrastruttura reattiva in spring-core come Encoder e Decoder per la codifica e decodifica di flussi di oggetti.
  • @Controller stile, modello di programmazione basato su annotazioni, simile a Spring MVC, ma supportato in WebFlux, in esecuzione su uno stack reattivo.
  • Nuovo WebClient con un’API funzionale e reattiva per chiamate HTTP, paragonabile al RestTemplate ma attraverso un’API fluida e eccellente anche in scenari non bloccanti e di streaming basati sull’infrastruttura WebFlux.

Programmazione funzionale con supporto Kotlin

Spring 5 supporta ora anche la programmazione Kotlin. Questo è un grande passo verso il supporto della programmazione funzionale, proprio come Java si sta muovendo verso la programmazione funzionale.

  • Supporto per API a prova di null
  • Supporto per classi immutabili Kotlin con parametri opzionali e valori predefiniti.
  • Sfruttando i parametri di tipo reificati di Kotlin per evitare di specificare esplicitamente la classe da utilizzare per la serializzazione/deserializzazione in varie API come RestTemplate o WebFlux APIs.
  • Supporto per il costruttore autowired di Kotlin con parametri opzionali.
  • Supporto per la sicurezza del nulla di Kotlin per le annotazioni @Autowired/@Inject e @RequestParam/@RequestHeader/etc.

Miglioramenti nei test

  • Supporto per JUnit 5
  • Supporto per l’esecuzione parallela dei test nel framework Spring TestContext

Supporto deprecato e pacchetti rimossi

  • Pacchetti rimossi beans.factory.access, jdbc.support.nativejdbc, mock.staticmock dal modulo spring-aspects.
  • Pacchetti rimossi web.view.tiles2 e orm.hibernate3/hibernate4 eliminati. Ciò significa che se stai pianificando di utilizzare Spring 5, dovrai anche utilizzare Hibernate 5.
  • Sospensione del supporto per le vecchie tecnologie Portlet, Velocity, JasperReports, XMLBeans, JDO, Guava. Se stai utilizzando una qualsiasi di queste, migrare verso altre tecnologie oppure rimanere con Spring 4.

Questo è tutto per una rapida panoramica delle funzionalità di Spring 5. Riferimento: Spring GitHub Doc

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