Spring 5 fue lanzado a finales de 2017. Spring 5 trae una actualización masiva al marco de Spring. Spring 4 fue lanzado en 2013, así que todos esperaban una revisión importante del marco. Estoy muy feliz de ver las nuevas características en el marco de Spring.
Características de Spring 5
Las características de Spring 5 se pueden dividir ampliamente en las siguientes categorías:
- Soporte de Línea Base de Java
- Mejoras en la API principal
- Mejoras en Spring Web MVC
- Spring WebFlux
- Programación Funcional con Soporte para Kotlin
- Mejoras en las pruebas
- Soporte Obsoleto y Paquetes Eliminados
Soporte de Línea Base de Java
- Spring 5 se ejecuta en Java 8, por lo que el código de Spring puede aprovechar las expresiones lambda para mejorar la legibilidad del código.
- Spring 5 también soporta Java 9, por lo que podemos crear nuestras aplicaciones en una arquitectura basada en módulos.
- Spring 5 admite Java EE 7 y también es compatible con Java EE 8. Por lo tanto, podemos utilizar Servlet 4.0, Bean Validation 2.0, JPA 2.2 en nuestras aplicaciones. También podemos utilizar sus versiones anteriores, es decir, Servlet 3.1, Bean Validation 1.1, JPA 2.1.
- Las versiones preferidas de los servidores para las aplicaciones de Spring 5 son Tomcat 8.5+, Jetty 9.4+ y WildFly 10+.
I really like that spring 5 is trying to catch up to the latest version of different technologies.
Mejoras en la API principal
- Declaración de API no nula a nivel de paquete. Los argumentos, campos y valores de retorno nulos están explícitamente anotados con la anotación
@Nullable
. - Las operaciones de archivo se realizan a través de flujos NIO 2, es decir, no hay FileInput/Output Stream. Esta es una gran mejora y un impulso de rendimiento para las aplicaciones basadas en archivos.
- El Framework Spring 5.0 viene con su propio puente de registro Commons;
spring-jcl
en lugar del registro Commons estándar. - Soporte para proporcionar información de componentes de primavera a través del archivo de índice “META-INF/spring.components” en lugar de la exploración del classpath. Esto mejorará mucho el tiempo de inicio si tiene un proyecto de primavera grande y muchos componentes de primavera. También será mejor para los desarrolladores, ya que podemos buscar directamente en los archivos especificados para determinar el punto de entrada de la aplicación en lugar de buscar en todos los archivos del classpath.
Mejoras en Spring Web MVC
El módulo Spring MVC ha sido completamente renovado en cuanto al uso de las últimas tecnologías de Java EE. Algunas de las principales mejoras son:
- Soporte completo para la firma de Servlet 3.1 en las implementaciones de
Filter
proporcionadas por Spring. - Soporte para el argumento
PushBuilder
de Servlet 4.0 en los métodos del controlador Spring MVC. - MaxUploadSizeExceededException para el análisis multipart en Servlet 3.0 en servidores comunes.
- Soporte unificado para tipos de medios comunes a través del delegado MediaTypeFactory.
- Enlace de datos con objetos inmutables utilizando Kotlin, Lombok, @ConstructorProperties.
- Soporte para la API de enlace JSON como alternativa a Jackson y GSON.
- Soporte para Reactor 3.1 Flux y Mono así como RxJava 1.3 y 2.1 como valores de retorno de métodos del controlador Spring MVC.
- Soporte para
ResponseStatusException
como alternativa programática a@ResponseStatus
.
Spring WebFlux
Spring WebFlux es el nuevo módulo, es una alternativa al módulo spring-webmvc
y está construido sobre un marco reactivo. Este módulo se utiliza para crear aplicaciones totalmente asíncronas y no bloqueantes construidas sobre un modelo de ejecución de bucle de eventos.
- Infraestructura reactiva en spring-core como Encoder y Decoder para codificar y decodificar flujos de objetos.
- @Controller estilo, basado en anotaciones, modelo de programación, similar a Spring MVC, pero compatible con WebFlux, ejecutándose en una pila reactiva.
- Nuevo WebClient con una API funcional y reactiva para llamadas HTTP, comparable con RestTemplate pero a través de una API fluida y también destacando en escenarios no bloqueantes y de transmisión basados en la infraestructura de WebFlux.
Programación Funcional con Soporte Kotlin
Spring 5 también admite la programación Kotlin ahora. Este es un gran paso hacia el soporte de la programación funcional, al igual que Java también se está moviendo hacia la programación funcional.
- Soporte para API Segura ante Nulos
- Soporte para clases inmutables de Kotlin con parámetros opcionales y valores predeterminados.
- Aprovechando los parámetros de tipo reificados de Kotlin para evitar especificar explícitamente la Clase a utilizar para la serialización/deserialización en varias APIs como RestTemplate o APIs de WebFlux.
- Soporte para constructor autowired de Kotlin con parámetros opcionales.
- Soporte de seguridad nula de Kotlin para las anotaciones @Autowired/@Inject y @RequestParam/@RequestHeader/etc.
Mejoras en las pruebas
- Soporte para JUnit 5
- Soporte para la ejecución de pruebas en paralelo en el Framework de Spring TestContext
Soporte obsoleto y paquetes eliminados
- Paquetes eliminados
beans.factory.access
,jdbc.support.nativejdbc
,mock.staticmock
del módulospring-aspects
. - Se eliminaron los paquetes
web.view.tiles2
yorm.hibernate3/hibernate4
. Esto significa que si planeas usar Spring 5, también deberás usar Hibernate 5. - Se ha dejado de dar soporte a las tecnologías antiguas Portlet, Velocity, JasperReports, XMLBeans, JDO, Guava. Si estás utilizando alguna de estas, entonces migra a otras tecnologías o quédate con Spring 4.
Eso es todo para una vista rápida de las características de Spring 5. Referencia: Documento de Spring GitHub
Source:
https://www.digitalocean.com/community/tutorials/spring-5