Se ha lanzado una nueva generación de Spring Framework, después de 5 años con Spring Framework 5.x, en noviembre de 2022, se ha lanzado Spring Framework 6. Y con él, Spring Boot tiene disponible una nueva versión principal, Spring Boot 3.
Ahora la pregunta es: ¿Qué hay de nuevo en estas nuevas versiones? Hay varias características nuevas, y algunas otras características obsoletas se han eliminado. Pero hay 4 características principales en estas versiones lanzadas.
- Java 17 es la línea de base
- Compatibilidad con las especificaciones y los paquetes de Jakarta EE 9 y 10.
- Observabilidad mejorada con Micrometer
- Compilación Nativa usando GraalVM
Java 17
Aunque la versión anterior de Spring Framework y Spring Boot tenía soporte para ejecutarse en Java 17, la línea base del código no es la última versión LTS. Para estas nuevas versiones, se compilan internamente las bibliotecas y se usan muchas de las nuevas características provistas en Java 17. Esto significa que también deberá migrar su código de línea base a Java 17 para comenzar a usar Spring Framework 6 o Spring Boot 3.
Soporte de Jakarta EE
Spring Framework utiliza algunas de las especificaciones de Java EE, por ejemplo, para Servlets, JPA o admite anotaciones CDI. Cuando Java EE se trasladó a la Eclipse Foundation y cambia el nombre a Jakarta EE, esas especificaciones también tuvieron que cambiar los paquetes de javax.*
a jakarta.*
.
Por lo tanto, usar el paquete javax.servlet.http.HttpServletRequest
ahora es jakarta.servlet.http.HttpServletRequest
. O javax.persistence.Entity
se reemplaza por. jakarta.persistencia.Entity
.
Observabilidad
Con Spring 6, hubo una iniciativa de observabilidad que terminó con una nueva API de Micrometer Observation y con el antiguo proyecto Spring Cloud Sleuth migrado a Micrometer Tracing. Esto es más para registrar de manera eficiente las métricas de la aplicación con Micrometer e implementar el seguimiento a través de proveedores, como OpenZipkin uOpenTelemetry.
Hay una configuración automática para todos estos en Spring Boot 3, y los proyectos de Spring están trabajando para instrumentarse usando la API de observación.
Compilación Nativa
Esta función es una respuesta a los frameworks como Quarkus y Micronaut, que han ido ganando popularidad debido al menor uso de recursos. Ahora, podemos generar código nativo sin complementos o complementos de terceros. Simplemente ejecutando mvn springboot:aot-generate
.
Otras nuevas características
La nueva versión no se limita a las nuevas características mencionadas anteriormente. Hay muchas mejoras, por ejemplo:
- Soporte para de un nuevo cliente Java para Elastic-search
- Soporte para Flyway 9
- Soporte para Hibernate 6.1
¿Cómo comenzar con estas versiones?
Seguro que te estarás preguntando en este momento qué necesito para empezar a usarlo.
Un proyecto nuevo desde cero
Si desea crear un nuevo proyecto desde cero, es tan simple como usar Spring Initializer. Seleccione Spring Boot 3.0 en las opciones, genere y descargue un proyecto con toda la configuración inicial requerida.
O puede crear manualmente un proyecto usando gradle o maven y agregar la dependencia: groupId org.springframework.boot
, artifactId spring-boot-starter-parent
y version 3.0.0
.
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>3.0.0</version> </parent>
Si desea crear un archivo jar ejecutable, puede agregar el complemento.
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>
Migración desde una versión anterior
Es posible que ya tenga una compilación de proyecto en Spring 5 y Spring Boot 2.7.x, o versiones anteriores. El primer paso debe ser migrar su código existente para usar las últimas versiones de Spring 5 y Spring Boot.
Luego, podemos usar la “herramienta experimental” Spring Migrator, que nos ayudará a mover nuestro código de Spring Boot 2.7.x a Spring Boot 3.0.0.
Si no está seguro de usar esa herramienta, lo podemos hacer manualmente.
- Primero migre su código para compilarlo y ejecutarlo en Java 17.
- Elimine los usos obsoletos informados en Spring 2.7.x. Porque Spring 3.0.0 está eliminando esas características obsoletas.
- Reemplace los paquetes
javax
ajakarta
en los import. - Actualice a Apache HttpClient 5. Necesario si utiliza Rest Template.
- Prefijo Spring Data, toda la configuración de Spring Data DEBE comenzar ahora con el prefijo
spring.data
, por ejemplo:spring.elasticsearch
debe reemplazarse porspring.data.elasticsearch
Referencias
- https://spring.io/blog/2022/11/24/spring-boot-3-0-goes-ga
- https://unpocodejava.com/2022/11/28/spring-boot-3-y-spring-6-publicados/
- https://www.baeldung.com/spring-boot-3-spring-6-new
- https://refactorizando.com/novedades-spring-boot-3-spring-framework-6/
- https://docs.spring.io/spring-boot/docs/current/reference/html/getting-started.html#getting-started