Spring Boot
Теория: Валидация сущностей
Валидация – это механизм проверки данных объекта на корректность перед их сохранением в базу данных. Валидация реализуется набором аннотаций Jakarta Bean Validation, которые обычно применяются к сущностям и DTO. В этом уроке мы поговорим о том, как добавить правила валидации и как выполнить саму валидацию.
Описание валидации
Возьмем для примера модель User с добавленными аннотациями для валидации:
В этом примере:
@Emailпроверяет, чтоemailсодержит корректный адрес@NotBlankпроверяет, чтоfirstNameсодержит хотя бы один цифро-буквенный символ@NotNullпроверяет, чтоpasswordне пустой@Sizeпроверяет, что минимальная длина пароля составляет восемь символов
Есть и множество других аннотаций. Заранее знать их не нужно, но имеет смысл периодически просматривать их список в спецификации.
Автоматическая валидация
Валидация выполняется с помощью аннотации @Valid, которая применяется в контроллере:
Аннотация @Valid идет в паре с @RequestBody. Сама валидация вызывается уже на получившемся объекте, в нашем примере — это user. При успешной валидации вызывается метод контроллера, при неуспешной — возникает исключение MethodArgumentNotValidException. Spring Boot обрабатывает это исключение автоматически и возвращает ошибку 400 Bad Request:
В примере выше обратите внимание на тело запроса. Здесь мы используем для него саму сущность, но в реальном коде там почти наверняка будет использоваться DTO. В этом случае нам придется дополнительно повесить валидацию на DTO:
Теперь мы можем заменить сущность на DTO:
На выходе мы получаем аннотации, добавленные в саму сущность и в ее DTO, используемые для создания или обновления. Это неизбежно приводит к дублированию аннотаций, что придется регулярно делать в реальном коде.



