Vai al contenuto

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

  • @Valid sul @RequestBody attiva 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

  1. Aggiungi @FutureOrPresent su dueDate per impedire date passate.
  2. Crea un validator custom @NoProfanity per filtrare parole nel title.
  3. Usa @AssertTrue su un getter calcolato per esprimere regole composte.

Riferimenti nel codice