Spring Framework 6: qué es, Java 17+ y migración [2026]

2025-12-11
JavaSpringSpring BootSpring Framework 6

Spring Framework 7, publicado en noviembre de 2025 junto con Spring Boot 4, es la última versión estable del framework Java más popular del mundo. Introduce Virtual Threads nativos del Proyecto Loom, @Retryable sin dependencias externas y @HttpServiceClient para clientes HTTP declarativos. Si todavía usas Spring 6 o Spring Boot 3, esta guía explica exactamente qué cambia y cómo migrar tu aplicación paso a paso.

Spring 7 vs Spring 6: tabla comparativa completa {#spring-7-vs-spring-6}

CaracterísticaSpring 6.x (Boot 3.x)Spring 7.x (Boot 4.x)
LanzamientoNoviembre 2022Noviembre 2025
Java mínimo1717
Java recomendado21 (LTS)25 (próximo LTS)
Virtual ThreadsParcial (Spring 6.1+)Nativo (Proyecto Loom)
Resilienciaspring-retry externo@Retryable integrado
Clientes HTTPWebClient / RestTemplate@HttpServiceClient (nuevo)
API VersioningNo nativoSí, nativo
Null SafetyNoJSpecify integrado
Tomcat compatible10.111
Soporte OSSHasta agosto 2026Activo

Tabla de contenidos

¿Qué es Spring Framework 7? Novedades principales {#spring-7-novedades}

Spring Framework 7 es la versión publicada en noviembre de 2025 junto con Spring Boot 4: novedades y migración. Mantiene Java 17 como mínimo pero está optimizado para Java 25, añade @Retryable integrado y Virtual Threads nativos del Proyecto Loom.

Liberado en noviembre de 2025, Spring Framework 7 (y Spring Boot 4) dobla la apuesta por la productividad del desarrollador y las capacidades cloud-native:

  • Soporte para Java 25: Permite exprimir las últimas mejoras de la JVM, incluyendo los hilos virtuales (Virtual Threads) del Proyecto Loom de forma completamente nativa, para una concurrencia simplificada y de alto rendimiento.
  • Resiliencia Integrada con @Retryable: Patrones como reintentos automáticos se integran en el núcleo del framework. Antes solo disponibles a través de la librería externa spring-retry, ahora son una anotación de primera clase.
  • Clientes HTTP Declarativos con @HttpServiceClient: La creación de clientes para comunicación entre microservicios se simplifica enormemente. Defines la interfaz, Spring genera la implementación.
  • Modularización y Null-Safety: La modularización completa de Spring Boot y la adopción de JSpecify para mejor null-safety contribuyen a un código más limpio, mantenible y seguro en tiempo de compilación.
  • API Versioning nativo: Spring 7 incluye soporte integrado para versionar APIs REST sin dependencias adicionales, una funcionalidad muy demandada en arquitecturas de microservicios.

Migración a Spring 7: Maven y Gradle {#spring-7-maven}

Migrar de Spring Boot 3: guía de migración Jakarta EE a Spring Boot 4 implica actualizar el parent en tu build tool y revisar las dependencias afectadas por los breaking changes de Spring 7. El proceso es menos traumático que la migración de Spring 5 a Spring 6, porque el namespace jakarta.* ya está en su sitio desde Boot 3.

Maven: pom.xml

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>4.0.0</version>
    <relativePath/>
</parent>

<properties>
    <java.version>25</java.version>
</properties>

Si usas spring-retry como dependencia separada (<artifactId>spring-retry</artifactId>), puedes eliminarla del pom.xml@Retryable ya está integrado en Spring Framework 7 sin dependencias adicionales.

Gradle: build.gradle.kts

plugins {
    id("org.springframework.boot") version "4.0.0"
    id("io.spring.dependency-management") version "1.1.x"
    kotlin("jvm") version "2.1.x"
}

java {
    toolchain {
        languageVersion = JavaLanguageVersion.of(25)
    }
}

dependencies {
    implementation("org.springframework.boot:spring-boot-starter-web")
    // spring-retry ya no es necesario como dependencia explícita
}

Breaking changes principales en Spring Framework 7

  • Jakarta EE 10 completo: Todas las APIs de Jakarta EE migran a la versión 10. Si ya estás en Spring 6/Boot 3 con jakarta.*, el impacto es mínimo: solo afecta a los módulos que consumían APIs de EE 9 de forma directa.
  • Eliminación de APIs deprecated desde Spring 5.x: Spring 7 elimina definitivamente todas las APIs marcadas como deprecated en la rama 5.x. Ejecuta tu proyecto con Spring 6.2 y revisa los warnings de deprecación antes de saltar a 7.
  • spring-retry ya no es necesario como dependencia: @Retryable y @Recover son ahora parte del core de Spring. Elimina spring-retry del pom.xml o build.gradle para evitar conflictos de clases duplicadas.
  • JSpecify para null-safety: El sistema de tipos null-aware de JSpecify se adopta en el núcleo. Si usas anotaciones de @Nullable/@NonNull de otras librerías, valida la compatibilidad con las nuevas anotaciones JSpecify.
  • Tomcat 11 como servidor embebido predeterminado: Spring Boot 4 usa Tomcat 11 por defecto. Si desplegabas en Tomcat externo, actualiza a la versión 11 para evitar incompatibilidades con la API de Servlet 6.1.

Consulta la guía oficial de migración de Spring 6.2 a 7.0 para un listado exhaustivo de incompatibilidades y las recetas de OpenRewrite disponibles para automatizar la mayor parte del proceso.

Conoce también las buenas prácticas en Spring Boot para aplicar desde el primer día en tu proyecto actualizado.

¿Tu equipo está migrando a Spring 7 o Spring Boot 4 y necesitas apoyo técnico? Cuéntame tu proyecto — como consultor IT puedo ayudarte a planificar la migración sin interrumpir la producción.

¿Qué es Spring Framework 6? {#spring-6}

Spring Framework 6, lanzado en noviembre de 2022 junto con Spring Boot 3, es la versión que modernizó obligatoriamente el ecosistema Spring con dos cambios fundamentales:

  • Java 17+ y Jakarta EE 9/10: La adopción de Java 17 como línea base permite aprovechar las últimas características del lenguaje. La migración al espacio de nombres jakarta.* (antes javax.*) alinea el framework con el estándar actual de Java empresarial — este cambio rompe compatibilidad hacia atrás y es el principal esfuerzo de cualquier migración desde Spring 5.x.
  • Imágenes Nativas con GraalVM: El soporte de compilación Ahead-Of-Time (AOT) y GraalVM es ya una característica de primera clase. Se traduce en arranques casi instantáneos y reducción drástica del consumo de memoria, clave para arquitecturas serverless y microservicios.

¿Qué versión de Java necesita cada versión de Spring? {#versiones-java}

Versión SpringSpring BootJava mínimoJava recomendado
Spring 5.3.xBoot 2.xJava 8Java 11 / 17
Spring 6.xBoot 3.xJava 17Java 21 (LTS)
Spring 7.xBoot 4.xJava 17Java 25 (próximo LTS)

¿Qué cambia de Spring 5 a Spring 6? Guía de migración {#spring-5-a-spring-6}

La migración de Spring 5 a Spring 6 es la más disruptiva de la historia del framework porque rompe la compatibilidad binaria. Esto es lo que cambia:

AspectoSpring 5.3.x (Boot 2.x)Spring 6.x (Boot 3.x)
Java mínimoJava 8Java 17
Namespacejavax.*jakarta.*
Jakarta EENoSí (EE 9/10)
Compilación nativaNoGraalVM AOT
Virtual ThreadsNoParcial (Spring 6.1+)
Soporte OSS activoFinalizado

El cambio principal es el namespace: todas las importaciones javax.* (servlets, JPA, Bean Validation…) deben reemplazarse por jakarta.*. En proyectos grandes, usa OpenRewrite con la receta UpgradeSpringBoot_3_0 para automatizar el proceso y evitar errores manuales.

Compatibilidad con Tomcat: Spring 6, Spring 7 y Spring Boot {#compatibilidad-tomcat}

Una de las búsquedas más frecuentes es “spring 6 tomcat compatibility”. La tabla siguiente resume las versiones de servidor compatibles con cada generación:

Spring FrameworkSpring BootTomcatServlet APIJava mínimo
Spring 5.3.xBoot 2.xTomcat 9Servlet 4.0 (javax.*)Java 8
Spring 6.xBoot 3.xTomcat 10.1Servlet 5.0 (jakarta.*)Java 17
Spring 7.xBoot 4.xTomcat 11Servlet 6.1 (jakarta.*)Java 17

Nota importante: Tomcat 9 usa el namespace javax.*. Tomcat 10+ usa jakarta.*. Si migras de Spring 5 a Spring 6, debes actualizar Tomcat a la versión 10.1 como mínimo; de lo contrario, tu app no arrancará.

Preguntas frecuentes sobre Spring 6 y Spring 7 {#faq}

¿Qué es Spring 6?

Spring Framework 6 es la versión publicada en noviembre de 2022 que marcó la modernización obligatoria del ecosistema Spring: requiere Java 17+, migra al namespace jakarta.* y añade soporte de primera clase para GraalVM. Es la base de Spring Boot 3.

¿Es compatible Spring 7 con Java 17?

Sí. Spring Framework 7 mantiene Java 17 como versión mínima soportada, aunque recomienda Java 25 (próximo LTS) para aprovechar Virtual Threads nativos y las últimas mejoras de rendimiento de la JVM.

¿En qué se diferencian Spring 6 y Spring 7?

Spring 6 modernizó el ecosistema con Jakarta EE 9 (namespace jakarta.*) y GraalVM nativo. Spring 7 añade @Retryable integrado sin dependencias externas, @HttpServiceClient para clientes HTTP declarativos, soporte nativo para Java 25 y Virtual Threads del Proyecto Loom.

¿Qué es Spring y para qué sirve?

Spring Framework es el estándar de facto para aplicaciones Java empresariales. Proporciona inyección de dependencias, programación orientada a aspectos, acceso a datos, seguridad y soporte para REST, gRPC y mensajería. Spring Boot automatiza su configuración para arrancar proyectos productivos en minutos.

¿Es necesario Tomcat 11 para Spring 7?

Sí, si usas Tomcat embebido. Spring Boot 4 incluye Tomcat 11 como servidor predeterminado, que requiere la API Servlet 6.1 (jakarta.*). Si desplegabas en Tomcat externo con Spring Boot 3 (Tomcat 10.1), debes actualizar a Tomcat 11. El requisito de Java sigue siendo 17 como mínimo — Tomcat 11 no exige Java 21. Consulta la tabla de compatibilidad con Tomcat para el detalle por versión.

¿Cuál es la última versión de Spring Framework?

La última versión estable es Spring Framework 7.0, publicada en noviembre de 2025 junto con Spring Boot 4. Spring Framework 6.2.x sigue en soporte de mantenimiento hasta agosto de 2026. Para proyectos nuevos se recomienda iniciar directamente con Spring 7 y Spring Boot 4.

¿Buscas un consultor IT para tu empresa? Conoce mis servicios de consultoría IT: arquitectura cloud, desarrollo fullstack y liderazgo técnico. ¿Empresa en Mallorca o Baleares? Consultor IT en Mallorca.

¿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.