Spring Boot From Scratch¶
API REST per la gestione di progetti e task — costruita da zero con Spring Boot 3 e Java 21.
Quick Start Guida step-by-step Repo GitHub
Il dominio in una riga¶
Un'API per gestire progetti e i loro task con regole di business non banali: state machine controllata, archiviazione progetti, error handling standardizzato.
classDiagram
class Project {
UUID id
String name
String description
ProjectStatus status
Instant createdAt
Instant updatedAt
}
class Task {
UUID id
String title
String description
TaskStatus status
TaskPriority priority
LocalDate dueDate
}
Project "1" --> "*" Task : has Cosa imparerai¶
-
Layering Spring Boot
Controller → Service → Repository, DTO immutabili (records), constructor injection, separation of concerns.
-
JPA + Flyway
Entity con relazioni LAZY, query JPQL con parametri, migration versionate, vincoli
CHECKlato DB. -
Validation + RFC 7807
Bean Validation al boundary, errori standardizzati come
ProblemDetail, mai stack trace in prod. -
Domain logic
State machine controllata nel modello, eccezioni dedicate, regole di business nel posto giusto.
-
Testing serio
Unit (JUnit + Mockito + AssertJ), slice (MockMvc,
@DataJpaTest), Integration con PostgreSQL reale via Testcontainers. -
Observability
Actuator + Micrometer + Prometheus, health probes liveness/readiness, log strutturati.
-
Docker production-ready
Dockerfile multi-stage layered JAR, utente non-root, healthcheck, docker-compose per stack locale.
-
CI/CD GitHub Actions
Build & test su PR, docs su GitHub Pages, release con changelog auto, CodeQL, Dependabot.
Per chi è¶
- Sviluppatori junior — percorso strutturato per vedere un'applicazione Spring Boot ben fatta end-to-end.
- Sviluppatori mid — ripasso pattern moderni (records, virtual threads, RFC 7807, Testcontainers).
- Team — scaffold pulito da clonare per nuovi servizi Spring Boot.
Licenza¶
Distribuito sotto licenza MIT.