Выбор ответа Junior Spring MVC и REST спрашивают часто обновлено
Валидация не срабатывает
Вопрос
На DTO стоят @NotBlank и @Email, но пустое тело запроса спокойно доходит до сервиса. Что вероятнее всего забыли?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: @Valid на параметре @RequestBody. Аннотации ограничений сами ничего не делают: Spring запускает Bean Validation для аргумента только если на нём стоит @Valid или @Validated.
Варианты ответа
@Componentна классе DTO@ResponseBodyна методе контроллера@Validна параметре@RequestBodyправильный ответ- Сделать DTO record вместо класса
Разбор
Аннотации ограничений сами ничего не делают: Spring запускает Bean Validation для аргумента только если на нём стоит @Valid или @Validated. Ещё нужна зависимость spring-boot-starter-validation. DTO не должен быть бином, record для валидации не обязателен.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.