Demo5 — Spring Boot 3 + Gradle
Aplicación de ejemplo construida con Spring Boot 3 y Gradle. Incluye vistas personalizadas para generar reportes en PDF (iText 5) y Excel (Apache POI).
Características
- Generación de PDF con iText 5 mediante una vista personalizada
AbstractITextPdfView.
- Vista
CursoPdfView para renderizar listados en PDF.
- Vista
CursoXlsView basada en Apache POI para exportar a Excel.
- Migración a Jakarta Servlet (
jakarta.servlet.http.*) para compatibilidad con Spring Boot 3.x.
Requisitos
- Java 17 o superior (recomendado para Spring Boot 3).
- No necesitas instalar Gradle: el proyecto usa el Gradle Wrapper (
gradlew/gradlew.bat).
Estructura del proyecto
src/main/java/ Código fuente Java.
src/main/resources/ Recursos (configuración, plantillas, etc.).
build.gradle Configuración de Gradle.
settings.gradle Configuración del nombre del proyecto.
gradlew, gradlew.bat Ejecutables del Gradle Wrapper.
Configuración y ejecución
Compilar
# Windows
.\\gradlew.bat compileJava
# Linux/Mac
./gradlew compileJava
Ejecutar la aplicación
# Windows
.\\gradlew.bat bootRun
# Linux/Mac
./gradlew bootRun
La aplicación levanta un servidor en http://localhost:8080/ por defecto.
Construir el JAR
# Windows
.\\gradlew.bat build
# Linux/Mac
./gradlew build
El artefacto quedará en build/libs/. Puedes ejecutarlo con:
java -jar build/libs/<nombre-del-jar>.jar
Cambio de puerto
Si el puerto 8080 está en uso, puedes arrancar en otro puerto:
- Configurando
src/main/resources/application.properties:
server.port=8081
- O pasando el parámetro al arrancar:
.\\gradlew.bat bootRun --args='--server.port=8081'
Solución de problemas
"Port 8080 was already in use"
En Windows, identifica el proceso y deténlo:
netstat -ano | findstr :8080
# Busca el PID y deténlo (ejemplo PID 5176)
Stop-Process -Id 5176 -Force
Luego vuelve a ejecutar la app o cambia el puerto como se indica arriba.
Errores de compilación por javax/jakarta
Si aparecen errores relacionados con javax.servlet.*, verifica que todos los imports usen jakarta.servlet.*.
Vistas y exportaciones
AbstractITextPdfView: clase base personalizada que implementa View y genera PDF con iText 5.
CursoPdfView: implementa buildPdfDocument(...) para construir el documento PDF.
CursoXlsView: extiende AbstractXlsView y sobrescribe buildExcelDocument(...) para construir el Excel.
Para utilizar estas vistas, los controladores deben retornar ModelAndView con el nombre de la vista registrada (por ejemplo, listar.pdf o listar.xlsx) y un modelo con los datos necesarios (por ejemplo, "cursos").
Tests
Ejecuta los tests con:
# Windows
.\\gradlew.bat test
# Linux/Mac
./gradlew test
Notas
- Este proyecto usa Jakarta EE APIs para compatibilidad con Spring Boot 3.x.
- iText 5 es utilizado únicamente para la generación de PDF en las vistas personalizadas.