Este repositorio contiene un ecosistema de micro-proyectos y prácticas desarrolladas con Spring Boot, ahora completamente modernizado para las últimas tecnologías de la plataforma Java.
Se ha realizado una actualización de gran alcance para llevar todo el codebase a los estándares más modernos de la industria:
- Java 25 (LTS): Todo el proyecto compilado y ejecutado bajo la especificación Java 25 nativa (
maven.compiler.release=25). - Spring Boot 3.5.3: Actualización a la última versión estable real de Spring Boot 3, asegurando compatibilidad con Jakarta EE 10+ y eliminando dependencias obsoletas.
- Hilos Virtuales de Java (Virtual Threads - JEP 444): Habilitados globalmente (
spring.threads.virtual.enabled=true) en todos los submódulos configurados, logrando concurrencia ultra-ligera y óptima para operaciones asíncronas. - Java Records (Java 16+): Refactorización masiva de DTOs, Requests y Payloads a estructuras inmutables de tipo
record, eliminando más de 500 líneas de código repetitivo (boilerplate) de getters, setters, constructores y métodosequals/hashCode/toString. - Maven Wrapper (
mvnw): Añadido para estandarizar la compilación y dependencias del ecosistema sin necesidad de instalación previa del framework Maven.
- JDK 25 (o superior): Necesario para compilar y ejecutar este proyecto.
- Maven Wrapper: Incluido en el directorio raíz como
./mvnw.
Este ecosistema cubre una amplia gama de escenarios, desde básicos hasta avanzados:
| Módulo | Descripción | Cambios en Modernización |
|---|---|---|
spring-mlt |
Microservicio complejo con Seguridad, Mensajería y Cache | Migración a Spring Security 6, Spring Cloud Stream 4 y Resilience4J 2. Hilos Virtuales activos. |
springboot-jpa-basic-junit5 |
Pruebas unitarias de persistencia | Configurado para compatibilidad Mockito con Java 25. DTOs migrados a Records. |
springboot-h2database |
Servicios REST con base de datos en memoria | Inyección de dependencias moderna, DTOs y Requests migrados a Records. |
springboot-platzi |
Práctica sobre JPA y persistencia avanzada | Reemplazo de @GenericGenerator de Hibernate (obsoleto) a favor de la estrategia estándar de JPA GenerationType.UUID. |
spring-applicationcontext-jdbc |
Configuración clásica de Contexto de Spring | Refactorización de Bean lookups manuales a métodos genéricos auto-tipados context.getBean(name, Class). DTOs migrados a Records. |
Durante este proceso se resolvieron retos clave de compatibilidad:
- JPA UUID Generation: Eliminación de dependencias propietarias de Hibernate para la generación de claves primarias UUID, usando la propiedad nativa de Jakarta Persistence.
- Mockito y ByteBuddy: Parámetros específicos en
maven-surefire-plugin(-Dnet.bytebuddy.experimental=true) para permitir que las pruebas unitarias instrumenten clases en Java 25 sin conflictos de bytecode. - Inyección por Constructor: Remoción gradual de la inyección por campo (
@Autowired) a favor de inyección basada en constructor para promover la inmutabilidad y pruebas más sencillas.
Para construir y ejecutar tests en todo el ecosistema usando el wrapper de Maven:
./mvnw clean testPara instalar y empaquetar todos los submódulos:
./mvnw clean install -DskipTestsDesarrollado y mantenido bajo estándares modernos de ingeniería de software con soporte nativo para Hilos Virtuales y código inmutable.