Menú de navegaciónMenú
Categorías
Logo campusMVP.es

La mejor forma de Aprender Programación online y en español www.campusmvp.es

Spring Boot 3.5: novedades, mejoras y breaking changes para desarrolladores Java

Hoy vamos a hablar de Spring Boot 3.5, la última entrega de este popular framework para desarrollar aplicaciones Java, lanzada el pasado viernes.

¿Qué es Spring Boot?

Spring Boot es un framework de desarrollo basado en Java que simplifica la creación de aplicaciones empresariales. Es parte del ecosistema de Spring, que es un conjunto de herramientas y bibliotecas para el desarrollo de aplicaciones Java. Permite desarrollar aplicaciones independientes que se pueden ejecutar sin un servidor de aplicaciones externo, y está diseñado para ser fácil de usar, ofreciendo una estructura de proyecto estándar y convenciones que aceleran mucho el proceso de desarrollo. Además, se integra de manera fluida con otros proyectos del ecosistema Spring, facilitando la construcción de aplicaciones robustas y escalables.

Spring Boot es la elección de muchos desarrolladores por su capacidad para simplificar la creación de aplicaciones listas para producción, eliminando gran parte del código repetitivo y facilitando el enfoque en la lógica de negocio. Su principio de "convención sobre configuración" lo convierte en una herramienta ideal para microservicios y aplicaciones Web en la nube.

En esta nueva versión 3.5, Spring Boot sigue evolucionando, trayendo consigo nuevas características y mejoras que buscan optimizar el rendimiento y mejorar tu experiencia como desarrollador. Veremos qué novedades trae y qué cambios debes tener en cuenta al actualizar tus proyectos.

Principales novedades y mejoras de Spring Boot 3.5.0

Imagen ornamental

Spring Boot 3.5 llega con un puñado de novedades interesantes que te harán la vida más fácil. Una de las más destacadas es el soporte para Java 21, la versión con soporte a largo plazo (LTS) más reciente de la plataforma Java. Esto significa que puedes aprovechar las últimas mejoras de rendimiento y las nuevas características del lenguaje, como el "Pattern Matching" en instrucciones switch, las clases de tipo Record, o los hilos virtuales de Java, que hacen tu código más limpio y legible además de con mayor rendimiento.

Si te interesa ver todo lo que aporta Java 21 frente a la anterior LTS, este artículo te lo explica: "Java 21 está aquí. Estas son las novedades".

En cuanto a la configuración, Spring Boot 3.5 mejora la carga de propiedades. Ahora puedes cargar múltiples propiedades desde una única variable de entorno. Por ejemplo, una variable de entorno con varias líneas MI_CONFIGURACION:

mi.var1=valor1
mi.var2=valor2

ahora se puede importar de golpe simplemente usando el prefijo:env:

spring.config.import=env:MI_CONFIGURACION

de modo que todas las variables estén disponibles en el archivo. El formato para las variables de entorno puede ser YAML también. Detalles en la documentación oficial: Usando Variables de Entorno en Spring Boot.

Además, se han creado las nuevas anotaciones @ServletRegistration y @FilterRegistration como alternativa a la hora de registrar Servlets y Filtros respectivamente, simplificando su configuración, por ejemplo:

@Configuration(proxyBeanMethods = false)
class MyConfiguration {

    @Bean
    @FilterRegistration(name = "my-filter", urlPatterns = "/test/*", order = 0)
    MyFilter myFilter() {
        return new MyFilter();
    }

}

También se han añadido propiedades para la configuración global de WebClient, como los tiempos de espera y las redirecciones. Mira los detalles en la documentación oficial: Configuración del Conector HTTP Global de Spring Boot.

Si te preocupa el rendimiento, te gustará saber que se ha extendido el soporte para GraalVM Native Image. Esto permite compilar tus aplicaciones Spring a binarios nativos, lo que reduce drásticamente el tiempo de arranque y el consumo de memoria. Es perfecto para microservicios y arquitecturas sin servidor.

Otras novedades de menor calado son:

  • La configuración automática de un bean bootstrapExecutor, que habilita la inicialización de beans en segundo plano si existe en el contexto alguno llamado applicationTaskExecutor , el cual será el predeterminado en caso de que no haya ya uno definido. Esto habilita la inicialización en segundo plano del bean sin tener que hacer nada.
  • Ahora puedes configurar Spring Boot para que autoconfigure un AsyncTaskExecutor incluso si ya existe un bean Executor, usando la propiedad spring.task.execution.mode al valor force. Al ejecutar en este modo, se asegura de que todas las integraciones, incluido el procesamiento convencional de @Async, utilicen ese ejecutor autoconfigurado, a menos que se defina expresamente un bean AsyncConfigurer.
  • El perfil nativeTest de Maven ahora es más amigable para proyectos multimódulo. La ejecución de test nativos no se llevará a cabo a menos que se definan los plugin de Spring Boot y de herramientas de build nativa en el proyecto. Detalles en Procesando Tests en Spring Boot.
  • Se ha añadido soporte SSL del lado del cliente para varias conexiones de servicio como Cassandra, Kafka o Redis entre otras.
  • El endpoint heapdump de Actuator ahora tiene un valor por defecto de access=NONE para reducir filtraciones inadvertidas de información. Si quieres usarlo, deberás exponerlo expresamente y configurarlo.
  • Puedes activar trabajos de Quartz enviando una llamada HTTP por POST al endpoint de Actuator: /actuator/quartz/jobs/{groupName}/{jobName}.
  • El endpoint mappings ahora incluye información sobre las funciones del router WebMvc.fn.

Todavía hay más novedades, pero estas son las principales. Como ves, son bastantes cosas que te ayudarán a construir mejores aplicaciones de forma más eficiente y segura. Pero como en cada actualización, hay cosas que cambian y es bueno tenerlas en cuenta para evitar sorpresas.

Cambios importantes que pueden romper tu aplicación Spring Boot

Como toda nueva versión, Spring Boot 3.5 trae algunos "breaking changes" que deberías conocer para que tus migraciones sean más suaves, ya que pueden hacer que rompa tu aplicación actual al cambiarla a la nueva versión.

Lo primero que notarás es que el módulo spring-boot-parent ya no se publica. Si lo usabas, ahora tendrás que reemplazarlo con tu propia gestión de dependencias que se ajuste a las necesidades de tu aplicación.

Las reglas para nombrar perfiles se han vuelto más estrictas. Ahora solo pueden contener guiones, guiones bajos, letras y dígitos. Además, no pueden empezar ni terminar con un guion o un guion bajo. ¡Así que ojo con eso! Si tienes algún perfil anterior nombrado de forma incompatible deberás cambiarle el nombre antes de actualizar.

Otro cambio importante afecta a las propiedades .enabled y otras propiedades de configuración de tipo booleano. Antes, algunas versiones de Spring Boot consideraban cualquier valor diferente de false como habilitado. Ahora, los valores deben ser estrictamente true o false para que la validación sea más consistente.

El TestRestTemplate ahora usa la misma configuración de redirecciones que el RestTemplate normal. Si esto te causa problemas en tus test, puedes usar el método TestRestTemplate.withRedirects(...) para elegir otra estrategia.

En las versiones anteriores, Spring Boot autoconfiguraba un TaskExecutor con los beans de nombres taskExecutor y applicationTaskExecutor. A partir de esta versión, solo se proporciona el nombre applicationTaskExecutor. Si tu código solicita el Executor autoconfigurado por nombre, deberías adaptarlo para usar applicationTaskExecutor. Si no puedes cambiarlo de inmediato, puedes añadir el alias usando un BeanFactoryPostProcessor.

Si usas spring.data.redis.url, la base de datos de Redis ahora se determina por la URL. Si la URL no especifica una base de datos, se usa la que haya por defecto (índice 0). Ahora se hace caso omiso de la propiedad spring.data.redis.database cuando ya tenemos configurada spring.data.redis.url.

Finalmente, si empujas métricas a Prometheus Pushgateway, ahora necesitas io.prometheus:prometheus-metrics-exporter-pushgateway en lugar de io.prometheus:simpleclient_pushgateway. Esto puede requerir un cambio en la configuración. Si usabas management.prometheus.metrics.export.pushgateway.base-url, reemplázalo por management.prometheus.metrics.export.pushgateway.address y ajusta el valor al formato host:port. También se han añadido nuevas propiedades para el esquema (scheme), el formato (format) y la autenticación basada en tokens (token).

Como ves, son cambios que requieren tu atención, pero una vez los tengas controlados, la migración será pan comido.

Dependencias nuevas en Spring Boot 3.5

Otra cosa que siempre cambia con cada nueva versión de Spring Boot son sus dependencias. Lógicamente, ya que estas bibliotecas de las que depende también se actualizan. Actualizándose a las versiones nuevas, se asegura la compatibilidad y se aprovechan las últimas mejoras y correcciones de errores en las librerías que utiliza el framework.

Spring Boot 3.5 se actualiza a nuevas versiones de varios proyectos de Spring:

  • Spring Authorization Server 1.5.0
  • Spring Data 2025.0.0
  • Spring GraphQL 1.4.0
  • Spring HATEOAS 2.5.0
  • Spring Integration 6.5.0
  • Spring LDAP 3.3.0
  • Spring Security 6.5.0
  • Spring Session 3.5.0
  • Spring WS 4.1.0

Además de estos proyectos propios de Spring, también se han actualizado numerosas dependencias de terceros.

Mantener estas dependencias actualizadas es fundamental para asegurar la estabilidad, seguridad y compatibilidad de tus aplicaciones.

Lo bueno es que, al actualizar a Spring Boot 3.5, estas versiones se gestionarán automáticamente, facilitando tu trabajo.

Lo malo es que tienes que ver cuáles utilizas y, si alguna rompe la compatibilidad hacia atrás, ver si te afecta o no.

Soporte y futuro de Spring Boot

El equipo de Spring ha realizado cambios en la línea de tiempo de soporte para Spring Boot. Mientras que la versión LTS anterior, Spring Boot 2.7, tuvo 18 meses de lanzamientos de mantenimiento gratuitos, Spring Boot 3.5 solo tendrá 13 meses. Eso sí, la duración del soporte de pago se ha extendido bastante. La versión 2.7 añadió 37 meses de soporte de pago, para un total de 55 meses, mientras que la 3.5 ahora suma 72 meses, llegando a un total de ¡85 meses de soporte! (más de 7 años), siempre que tu empresa apoquine, claro.

De cara al futuro, ya se está mirando hacia Spring Boot 4.0. Se espera que esta nueva generación se lance a finales de noviembre de 2025, poco después de Spring Framework 7.0. Ambas versiones mantendrán la base de JDK 21, pero abrazarán JDK 25 LTS, que llegará el 16 de septiembre de 2025. Además, la línea base de Kotlin se moverá a Kotlin 2, y la línea base de Jakarta EE pasará de la versión 9 a la 11, lo que traerá consigo Tomcat 11, Hibernate ORM 7 y Hibernate Validator 9.

Estos cambios en el soporte y la planificación futura demuestran el compromiso continuo del equipo de Spring con la evolución del framework, asegurando que se mantenga relevante y potente para las necesidades de desarrollo modernas.

Tú o tu equipo de desarrollo con Java necesitáis dominar Spring Boot en poco tiempo. Pues os puede salir sin coste si lo hacéis con campusMVP.es. Nosotros nos encargamos de todo. Tu gente solo de aprender.

 

campusMVP campusMVP es la mejor forma de aprender a programar online y en español. En nuestros cursos solamente encontrarás contenidos propios de alta calidad (teoría+vídeos+prácticas) creados y tutelados por los principales expertos del sector. Nosotros vamos mucho más allá de una simple colección de vídeos colgados en Internet porque nuestro principal objetivo es que tú aprendas. Ver todos los posts de campusMVP
Archivado en: Lenguajes y plataformas

Boletín campusMVP.es

Solo cosas útiles. Una vez al mes.

🚀 Únete a miles de desarrolladores

DATE DE ALTA

x No me interesa | x Ya soy suscriptor

La mejor formación online para desarrolladores como tú

Agregar comentario

Los datos anteriores se utilizarán exclusivamente para permitirte hacer el comentario y, si lo seleccionas, notificarte de nuevos comentarios en este artículo, pero no se procesarán ni se utilizarán para ningún otro propósito. Lee nuestra política de privacidad.