Вопрос проверяет понимание глобальной обработки ошибок и принципов централизованного контроля поведения контроллеров.
@ControllerAdvice используется для глобальной обработки исключений и общих настроек контроллеров. Он позволяет вынести обработку ошибок в одно место. Это упрощает поддержку и обеспечивает единый формат ответов. Аннотация работает для всех контроллеров сразу. Чаще всего применяется вместе с @ExceptionHandler.
@ControllerAdvice — ключевой инструмент для централизованной логики, связанной с web-слоем.
@ControllerAdvice — это специальный компонент Spring MVC, который применяется ко всем контроллерам и позволяет перехватывать исключения и настраивать общее поведение.
Перед перечислением важно понимать: цель @ControllerAdvice — убрать дублирование логики из контроллеров.
Самый частый сценарий.
Что выносится
обработка RuntimeException
бизнес-исключения
ошибки валидации
Пример идеи
@RestControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(UserNotFoundException.class)
public ResponseEntity<ApiError> handleNotFound() {
// формирование ответа об ошибке
}
}
Все ошибки имеют одинаковую структуру
Клиенту проще их обрабатывать
Проще поддерживать API
Общие @InitBinder
Общие модели или преобразования
Не заменяет бизнес-валидацию
Не должен содержать сложную логику
Работает только в web-контексте
@ControllerAdvice — это стандартный способ централизовать обработку ошибок и общее поведение контроллеров в Spring MVC.