Novedades en Spring Boot 3 y Spring Framework 6

novedades spring boot 3

novedades spring boot 3


La reciente release de VMware de Spring Boot 3 junto con la nueva versión de Spring Framework 6 nos traen una serie de mejoras bastante importante y disruptivas respecto sus versiones anteriores para acercarnos cada vez más a un mundo Cloud Native. En este articulo vamos a ver las principales Novedades en Spring Boot 3 y Spring Framework 6.

Nuevas características y mejoras de Spring 6

Después de 5 años con Spring Framework 5, la nueva versión nos trae importantes cambios tales como:

  • Java 17: Aunque versiones anteriores de Spring Boot ya permitían hacer uso de la versión 17 de Java, la nueva versión de Spring Boot y del Framework obligaran a hacer uso de Java 17.
  • Sustituir Java EE con Jakarta EE: La versión mínima admitida es Jakarta EE9, lo que rompe compatibilidades con versiones anteriores. El paquete de nombre migra de javax.* a jakarta.* El uso de Jakarta EE 10 va a hacer Spring Framework 6 compatible con las últimas versiones de servidores como Tomcat 10.1, Jetty 11 y Undertow 2.3.
  • Simplificación de Queries con Spring Data.
  • Errores HTTP más manejables y entendibles con la RFC 7807
  • Compilación nativa: Sin duda una de las mejoras más deseadas, esta mejora se acerca a lo que Quarkus actualmente ofrece. Aunque esta mejora ya podía ser utilizada añadiendo el módulo spring-native.
  • Observabilidad: Ya que la idea es ir hacia un entorno más cloud native, se añade observabilidad basada en registro de métricas con Micrometer y proveedores como OpenZipkin y OpenTelemetr.y
  • JPMS: Aunque no esta en la versión inicial la idea es tenerla para futuras versiones, un acceso más estricto al código de las aplicaciones y bibliotecas
  • Spring 6 también incorporará características del proyecto Loom. (Virtual Threads)
  • Actualización a Kotlin 1.7, Hibernate ORM 6.1, Jackson 2.14 y R2DBC 1.0 para uso con Bases de Datos reactivas.
  • Nueva versión de Flyway.

Nuevas características y cambios en Spring Boot 3

Como es obvio los cambios que tiene Spring 6, son aplicados a Spring Boot 3.

Además todas las características y funcionalidades deprecadas han sido eliminadas

¿ Cómo actualizar y migrar una aplicación a Spring 6 y Spring Boot 3?

Spring Boot nos ofrece una herramienta para realizar la migración más sencilla, la herramienta que se llama Spring Boot Migrator, nos puede ayudar a migrar de la versión 2.7 a la 3.0.Por ahora este es un proyecto experimental (por si alguna cosa falla).

A continuación enumeramos los cambios a tener en cuenta para realizar la migración:

Migrar a Java 17

El primer paso que habría que hacer en nuestra aplicación sería la de migrar a Java 17, lo más probable es que se tenga que realizar alguna modificación en el pom.xml.

Recomendable actualizar a últimas versiones de Spring 5 y Spring Boot 2

Durante las diferentes releases de Spring 5 y Spring Boot 2 se han ido deprecando algunas clases, lo óptimo para poder ir a la versión 3 de Spring Boot es haber cambiado todas esas clases deprecadas ya que en las nuevas versiones no existirán. Por lo que cambiar a la última versión de Spring 5 y Spring Boot 2 nos ayudará a mitigar cualquier problema de clases deprecadas.

Cambio de Javax a Jakarta

Una vez hemos cambiado la versión a Spring Boot 3, será necesario cambiar todos los paquetes de javax.* a jakarta.*

Actualizar HttpClient

Aunque ya no es muy común, si todavía sigues haciendo uso de restTemplate será necesario actualizarte a HttpClient 5.

Cambios en HttpMethod

La clase HttpMethod era una clase enum, para la nueva versión de Spring Boot 3 ya no se mostrarán más como enum por lo que se tendrá que adaptar el código.

Cambios en versión Log4j2

Cuando la versión de Log4j2 se ha añadido manualmente, será necesario ver cual es la última de la versión que vas a utilizar.

Formateo de Fecha en Log

El formato de las fechas en Logback y Log4j2 ha cambiado siguiendo la ISO-8601, siendo el nuevo formato yyyy-MM-dd ‘T’ HH:mm:ss.SSSXXX. Si este formato no te gusta y quieres mantener el anterior se podría hacer con logging.pattern.dateformat o haciendo uso de la variable de entorno LOG_DATEFORMAT_PATTERN.

Uso de spring.factories

El uso de spring.factories nos servía para crear configuraciones automatizadas ahora en la versión 3 solo se va a poder realizar autoconfiguraciones a través de archivos de importación.

YamlJsonParser

Si en algún proyecto se esta usando YamlJsonParser será necesario hacer un cambio a otro JsonParser.

Propiedad server.max-http-header-size cambia

La propiedad server.max-http-size es sustituida por server.max-http-request-header-size

Prefijo spring.data

Todos los proyectos que sean de spring data tendrán ahora como obligatorio el prefijo spring.data, por lo que las configuraciones en los ficheros en los application.yaml tienen que llevar ahora el prefijo data. Por ejemplo, spring.elasticsearch debería ser ahora spring.data.elasticsearch.

Cambios MongoDb y Elasticsearch

La configuración automática del Flapdoodle embedded MongoDB y el clinete Rest de Elasticsearch usa una nueva implementación

Conclusión

Spring framework 6 junto con Spring Boot 3 nos trae importantes novedades, desde mi punto de vista quizás las más importantes y esperadas sea el uso de imágenes nativas que aunque se podían usar desde algún tiempo importandonos el módulo, es una mejora muy importante para acercarse más al mundo cloud.

Si necesitas más información puedes escribirnos un comentario o un correo electrónico a refactorizando.web@gmail.com o también nos puedes contactar por nuestras redes sociales Facebook o twitter y te ayudaremos encantados!


2 pensamientos sobre “Novedades en Spring Boot 3 y Spring Framework 6

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *