Step 02 — Bean Validation¶
Obiettivo: validare il payload in ingresso al controller con annotazioni standard JSR-380.
Cosa costruiamo¶
Aggiungiamo annotazioni di validazione sui DTO records e attiviamo la validazione automatica con @Valid nel controller.
ProjectRequest.java
public record ProjectRequest(
@NotBlank @Size(max = 120) String name,
@Size(max = 2000) String description
) {}
TaskRequest.java
public record TaskRequest(
@NotBlank @Size(max = 200) String title,
@Size(max = 2000) String description,
TaskPriority priority, // enum, vincolato dal framework
LocalDate dueDate
) {}
Concetti chiave¶
@Validsul@RequestBodyattiva il validator.- Le enum sono validate automaticamente: se il client invia
"priority": "URGENT", Spring restituisce 400 (gestito in step-06). - I records funzionano con Bean Validation: le annotazioni vanno sui parametri del compact constructor.
Esercizi¶
- Aggiungi
@FutureOrPresentsudueDateper impedire date passate. - Crea un validator custom
@NoProfanityper filtrare parole neltitle. - Usa
@AssertTruesu un getter calcolato per esprimere regole composte.