Requisitos
- JDK21 o superior
- Base de datosPostgreSQL 16+ en el puerto 5434
- HerramientasGit y PowerShell 7+
La guía web funciona sin backend.
🍃 Guía interactiva · API REST real · Aprendizaje por capas
Vas a construir una API de fincas y cultivos entendiendo qué hace cada herramienta, por qué existe cada capa y cómo viaja una petición desde el navegador hasta PostgreSQL.
Una API es un recorrido: cada capa recibe una responsabilidad concreta.
La respuesta vuelve por las mismas capas: base de datos → Repository → Service → Controller → cliente.
El código de recursos/codigo-ejemplo/ es la base funcional que ampliarás.
La guía web funciona sin backend.
Descarga el ZIP, descomprímelo y abre la carpeta en Antigravity o VS Code. El proyecto ya incluye Maven Wrapper.
📦 Descargar código baseCrea .env desde .env.example y ejecuta la API con DevTools.
Ejecuta CRUD, validación 400, recurso 404, regla 422 y relación N:M en este orden.
Completa esta sección antes de programar. Debes terminar con la aplicación ejecutándose, un breakpoint activo y hot-reload comprobado.
Cuando algo falle, usa el mensaje para decidir dónde investigar.
La causa más común es que el auto-build del IDE esté apagado. DevTools no detecta un archivo .java suelto: el IDE debe compilarlo a .class. En VS Code usa Ctrl+Shift+P → Java: Build Automatically → ON; luego revisa “Restarting due to changed file...” y “LiveReload server is running on port 35729”.
En desarrollo el proyecto usa app.security.enabled=false. Si activaste producción, necesitas enviar un JWT válido; revisa M10 antes de cambiar la cadena de seguridad.
No es un error de compilación. Se debe a la rigurosa configuración de seguridad de nulos (Null-Safety) de Spring Boot 3 chocando con el compilador interno de VS Code / Eclipse (JDT). El framework declara que no acepta nulos por defecto en sus APIs, y tu editor te advierte porque tus variables no están explícitamente anotadas con @NonNull. Puedes ignorarlas de forma segura, o desactivarlas creando el archivo .vscode/settings.json en tu proyecto base con el valor: { "java.compile.nullAnalysis.mode": "disabled" }.
Diseña primero el recurso y su contrato JSON; después crea Entity, DTOs, Repository, Service y Controller. M8 muestra el orden completo.
Avanza solo cuando puedas explicar la decisión y verificarla en tu proyecto.