Pourquoi valider les données dans une app Spring Boot ?
Pour garantir l’intégrité, la cohérence, la sécurité, éviter les données malveillantes et détecter tôt les erreurs.
À quel niveau du backend doit-on valider les données ?
Au niveau de la couche d’exposition (DTOs de requête), avant toute logique métier ou persistance.
Comment Spring Boot gère-t-il la validation ?
Via les annotations Jakarta Bean Validation sur les champs des DTOs.
Différences @NotNull, @NotEmpty, @NotBlank ?
@NotNull → valeur pas null
@NotEmpty → non null + longueur > 0
@NotBlank → non null + pas uniquement des espaces
À quoi sert @Size ?
Imposer une taille min/max (chaînes, collections, tableaux).
À quoi servent @Min, @Max, @Positive, @Negative, …OrZero ?
Imposer des bornes ou un signe sur les valeurs numériques.
Quand utiliser @Past, @Future, …OrPresent ?
Pour vérifier qu’une date est dans le passé, le futur, ou incluant le présent.
Quels validateurs pour email / URL / regex ?
@Email, @URL, @Pattern
À quoi sert @Valid ?
Indique qu’un objet doit être validé récursivement (par ex. un DTO complet dans un contrôleur).
Où met-on @Valid ?
Devant un @RequestBody dans un contrôleur REST pour activer la validation automatique.
Quelle exception Spring déclenche quand la validation échoue ?
MethodArgumentNotValidException
À quoi sert @RestControllerAdvice ?
Centraliser la gestion des exceptions de tous les contrôleurs REST.
Pourquoi créer un handler global pour MethodArgumentNotValidException ?
Pour renvoyer des erreurs claires, structurées et réutilisables à tous les endpoints.
Que renvoie typiquement une erreur de validation ?
Une map champ → message d’erreur compréhensible par le client.
Pourquoi applique-t-on les validations sur les DTO de requête et non sur les entités ?
Car ce sont les objets reçus du client, et la validation doit filtrer les données avant d’atteindre le domaine.