Вопрос проверяет понимание жизненного цикла HTTP-запроса в Spring и умение выбрать правильный механизм для сквозной логики.
Фильтры работают на уровне сервлет-контейнера и не знают о Spring. Интерцепторы работают внутри Spring MVC и привязаны к контроллерам. Аспекты перехватывают вызовы методов и не зависят от HTTP. Каждый механизм решает свой класс задач и используется на своём уровне.
Фильтры, интерцепторы и аспекты часто путают, но они работают на разных уровнях и имеют разную зону ответственности.
Фильтр, интерцептор и аспект — это механизмы перехвата, применяемые на разных этапах обработки запроса и выполнения кода.
Перед перечислением важно понять: выбор механизма зависит от того, где именно нужна логика.
Фильтры работают вне Spring, на уровне сервлет-контейнера.
Характеристики
не знают о контроллерах и бинах
работают до попадания запроса в Spring
Типичные задачи
аутентификация
CORS
логирование «сырых» запросов
Интерцепторы — часть Spring MVC.
Характеристики
знают, какой контроллер будет вызван
имеют доступ к HandlerMethod
Типичные задачи
проверка прав доступа
аудит
метрики на уровне endpoint
Аспекты перехватывают вызовы методов бинов.
Характеристики
не привязаны к HTTP
работают на уровне бизнес-логики
Типичные задачи
транзакции
логирование сервисов
профилирование
Логика до Spring → Filter
Логика вокруг контроллера → Interceptor
Логика вокруг методов → Aspect
Фильтры, интерцепторы и аспекты дополняют друг друга и используются на разных уровнях, а не конкурируют между собой.