Spring Boot 4: novedades y migración desde Spring Boot 3

2026-05-22
Spring BootJavaSpring FrameworkCloud NativeBackend

Spring Boot 4 es la versión que acompaña a Spring Framework 7, publicada en noviembre de 2025. Requiere Java 17+, trae @Retryable integrado sin dependencias externas, soporte nativo para Virtual Threads y está optimizado para Java 25. Si ya estás en Spring Boot 3, aquí tienes qué cambia y cómo planificar la migración.

Versiones de Spring Boot: la secuencia correcta {#versiones-spring-boot}

Un punto de confusión habitual: no existe “Spring Boot 6”. La numeración de Spring Boot y Spring Framework son independientes:

Spring BootSpring FrameworkJava mínimoJava recomendadoEstado
Spring Boot 2.xSpring 5.3.xJava 8Java 11/17EOL
Spring Boot 3.xSpring 6.xJava 17Java 21 (LTS)Mantenimiento
Spring Boot 4.xSpring 7.xJava 17Java 25Activo

¿Qué es nuevo en Spring Boot 4? {#novedades-spring-boot-4}

Spring Boot 4 hereda todas las novedades de Spring Framework 7 y añade su propia capa de autoconfiguración:

@Retryable integrado sin dependencias externas {#retryable}

En Spring Boot 3 y anteriores, para añadir reintentos automáticos necesitabas la dependencia externa spring-retry. En Spring Boot 4 (Spring Framework 7), @Retryable es una anotación de primera clase del núcleo:

@Service
public class PagosService {

    @Retryable(maxAttempts = 3, backoff = @Backoff(delay = 1000))
    public void procesarPago(Pago pago) {
        // se reintenta automáticamente si lanza RuntimeException
        pasarelaExterna.cobrar(pago);
    }

    @Recover
    public void recuperar(RuntimeException ex, Pago pago) {
        // fallback cuando se agotan los reintentos
        log.error("Pago fallido tras 3 intentos: {}", pago.getId());
    }
}

Virtual Threads nativos con Project Loom {#virtual-threads}

Spring Boot 4 arranca con el executor de Virtual Threads activado por defecto cuando la JVM es Java 21+. Esto permite manejar miles de peticiones concurrentes sin el overhead de threads del SO:

# application.properties — activo por defecto en Java 21+
spring.threads.virtual.enabled=true

El impacto en APIs con alta I/O (bases de datos, llamadas HTTP) puede suponer una reducción del 40-60% en el uso de threads del sistema sin cambiar el código de negocio.

@HttpServiceClient: clientes HTTP declarativos mejorados {#http-service-client}

Spring Framework 7 introduce @HttpServiceClient como evolución de las HTTP Interfaces de Spring 6:

@HttpServiceClient(url = "${api.usuarios.url}")
public interface UsuarioClient {

    @GetExchange("/usuarios/{id}")
    Usuario getUsuario(@PathVariable Long id);

    @PostExchange("/usuarios")
    Usuario crearUsuario(@RequestBody NuevoUsuario usuario);
}

Spring Boot 4 autoconfigura el cliente automáticamente si el bean está en el contexto; no necesitas el builder manual de Spring 6.

Modularización completa y null-safety {#null-safety}

Spring Boot 4 adopta JSpecify para anotaciones de null-safety en toda la API pública. El compilador puede detectar NullPointerException en tiempo de compilación sin necesidad de herramientas externas.

¿Qué cambia de Spring Boot 3 a Spring Boot 4? {#migracion-spring-boot-3-a-4}

La migración de Spring Boot 3 a Spring Boot 4 es menos traumática que la de Boot 2 a Boot 3 (no hay cambio de namespace). Los cambios principales son:

ÁreaSpring Boot 3.xSpring Boot 4.x
Servidor embebidoTomcat 10.1Tomcat 11
Spring SecurityConfiguración LambdaLambda + nuevos métodos
Spring DataJakarta EE 9/10Jakarta EE 10/11
ActuatorEndpoints establesNuevos endpoints de Virtual Threads
@RetryableRequiere spring-retryIntegrado en el core
Spring BatchVersión 5.xVersión 6.x

Pasos de migración {#pasos-migracion}

  1. Actualiza Java a 21 o 25 — Aunque Boot 4 acepta Java 17, los Virtual Threads solo están disponibles en Java 21+.
  2. Cambia la versión del parent en pom.xml:
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>4.0.0</version>
    </parent>
  3. Elimina la dependencia spring-retry si la usabas solo para @Retryable — ya está en el core.
  4. Actualiza Tomcat si tienes Tomcat embebido externo: debe ser Tomcat 11.
  5. Revisa Spring Security — Algunos métodos deprecated en Boot 3 se eliminaron en Boot 4.
  6. Ejecuta los tests — La ausencia de cambio de namespace facilita enormemente la transición.

Spring Boot 4 vs Spring Boot 3: cuándo migrar {#cuando-migrar}

SituaciónRecomendación
Proyecto nuevoEmpieza directamente con Spring Boot 4
Proyecto en Boot 3 activo en producciónMigra cuando el equipo tenga un sprint de infraestructura dedicado
Proyecto en Boot 2Migra primero a Boot 3, luego a Boot 4 en dos pasos
Proyecto en Boot 2 con javax.* sin migrarPrioriza la migración Jakarta antes de pasar a Boot 4

Para entender en profundidad qué cambió en Spring Framework 7 (la base de Spring Boot 4), consulta la guía Spring 6 vs Spring 7.

¿Tienes dudas sobre la migración? Si gestionas múltiples microservicios Spring en producción, hablemos — diseño hojas de ruta de modernización que minimizan el riesgo operativo.

¿Listo para transformar tu stack tecnológico?

Hablemos sobre cómo llevar tus sistemas al siguiente nivel, optimizar el rendimiento y potenciar el talento de tu equipo.