Перехватчики (Interceptors)
Если у вас возникает ощущение, что всё это начинает слегка напоминать шпионский триллер с множеством “перехватов” и “посыльных”, вы абсолютно правы! Разработка – это иногда настоящий детектив, где нам нужно изучать и следить за различными процессами. И сегодня мы узнаем больше о еще одном актере на этой сцене – перехватчиках, или Interceptors.
Отличие перехватчиков от Advices
Под “перехватчиками” в Spring мы понимаем механизмы, которые позволяют “перехватывать” входящие и исходящие сообщения или запросы, обычно в 31 контексте веб-приложений. Они часто используются для таких задач, как логирование, безопасность, производительность и другие перекрестные задачи. Advices (Advices), с другой стороны, больше связаны с AOP и обеспечивают перекрестную функциональность на уровне метода. В простых словах: - Advices — это действия, которые выполняются до, после или вокруг метода. - Перехватчики — это механизмы, которые “перехватывают” запросы, перед тем как они достигнут их назначения (например, контроллера в веб-приложении).
public class LoggingInterceptor extends HandlerInterceptorAdapter {@Overridepublic boolean preHandle(HttpServletRequest request,HttpServletResponse response, Object handler) throws Exception {System.out.println("Request URL: " + request.getRequestURL().toString());return true;}@Overridepublic void postHandle(HttpServletRequest request,HttpServletResponse response, Object handler, ModelAndViewmodelAndView) throws Exception {System.out.println("After handling the request");}@Overridepublic void afterCompletion(HttpServletRequest request,HttpServletResponse response, Object handler, Exception ex) throwsException {System.out.println("Request completed");}}
В этом примере у нас есть перехватчик, который регистрирует URL каждого входящего запроса, а также регистрирует информацию после обработки запроса и после завершения обработки запроса. Чтобы этот перехватчик работал, его нужно зарегистрировать:
@Configurationpublic class AppConfig implements WebMvcConfigurer {@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(new LoggingInterceptor());}}
С перехватчиками вы можете реализовать множество полезных функций, таких как:
- Логирование всех входящих запросов. - Проверка аутентификации и авторизации. - Изменение ответов перед их отправкой пользователю.
- И многое другое!
Заключение
Таким образом, перехватчики – это мощный инструмент для управления входящими
и исходящими запросами в вашем веб-приложении, в то время как Advices AOP
позволяют управлять поведением методов в вашем приложении. Оба эти
механизма являются чрезвычайно полезными для реализации перекрестной
функциональности