Этап 3 из 10 · ≈ 4 ч

Валидация и обработка ошибок

Основа с Junior

Bean Validation, @ControllerAdvice и единый формат ошибок.

Что важно знать

  • @Valid и аннотации @NotNull, @Size, @Email.
  • @RestControllerAdvice + @ExceptionHandler — единая обработка.
  • ProblemDetail (RFC 9457) встроен в Spring 6.

Критерии освоения

Junior ≈ 4 ч

  • Валидирует входные данные аннотациями Bean Validation
  • Обрабатывает ошибки в @ControllerAdvice и возвращает понятный ответ

Практика. Добавить валидацию создания заказа и единую обработку ошибок с тестами.

Middle ≈ 2 ч

  • Возвращает ошибки в формате Problem Details и пишет свои валидаторы

Практика. Перевести ответы об ошибках сервиса на ProblemDetail и написать валидатор согласованности полей.

Проверка знаний

Войдите, чтобы пройти тест: сданный тест отмечает тему пройденной на карте и в ИПР.

Вопросы с собеседований

Смотреть все
Зачем нужна аннотация @Valid на теле запроса в контроллере?Junior

@Valid на теле запроса включает проверку ограничений на полях DTO (@NotBlank, @Email, @Size); при нарушении метод контроллера не вызывается, клиент получает 400.

Полный разбор
Как в Spring MVC обычно обрабатывают ошибки и валидацию входных DTO?Middle

Ограничения — аннотациями Bean Validation на полях DTO (@NotBlank, @Email, @Size, @Positive), проверка — @Valid на параметре контроллера, ошибки — в @RestControllerAdvice в едином формате (ProblemDetail с полями).

Полный разбор
Чем @Validated отличается от @Valid?Middle

@Valid — стандарт Jakarta Bean Validation, включает каскадную проверку вложенных объектов. @Validated — аннотация Spring: группы валидации и проверка параметров методов бинов (на классе).

Полный разбор
В контроллере стоит @Valid @RequestBody CreateUserRequest, и клиент прислал невалидное тело. Что произойдёт по умолчанию?Middle

Spring бросает MethodArgumentNotValidException, метод контроллера не вызывается, ответ по умолчанию — 400. Список ошибок полей нужно отдать клиенту через @RestControllerAdvice.

Полный разбор
Чем @ControllerAdvice отличается от @ExceptionHandler внутри контроллера?Middle

@ExceptionHandler в контроллере — локальный, в @ControllerAdvice — глобальный. Локальный обработчик подходящего типа выигрывает у глобального.

Полный разбор
Чем ответы 401, 403 и 404 отличаются и что возвращать на запрос чужого ресурса?Junior

401 Unauthorized — личность не установлена: нет токена или он неверный. 403 Forbidden — личность известна, но прав нет. 404 Not Found — ресурс не найден.

Полный разбор
Что означает код ответа 404?Junior

404 Not Found — ресурса по этому адресу нет. Это группа 4xx — ошибка на стороне клиента; 5xx — ошибка сервера.

Полный разбор
Как проверять входные данные в Spring с помощью Bean Validation?Junior

Ограничения ставят аннотациями на поля DTO: @NotNull, @NotBlank (строка не пустая), @Size(min, max), @Min/@Max, @Positive, @Email, @Pattern. В контроллере перед параметром тела — @Valid: при нарушении Spring бросает MethodArgumentNotValidException и отвечает…

Полный разбор

Разборы темы

← Вся карта «Spring»

Партнёр платформы

Разбор собеседования с sotto

После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.

Разбор собеседования