Перехватчики (Interceptors)

Если у вас возникает ощущение, что всё это начинает слегка напоминать шпионский триллер с множеством “перехватов” и “посыльных”, вы абсолютно правы! Разработка – это иногда настоящий детектив, где нам нужно изучать и следить за различными процессами. И сегодня мы узнаем больше о еще одном актере на этой сцене – перехватчиках, или Interceptors.


Отличие перехватчиков от Advices

Под “перехватчиками” в Spring мы понимаем механизмы, которые позволяют “перехватывать” входящие и исходящие сообщения или запросы, обычно в 31 контексте веб-приложений. Они часто используются для таких задач, как логирование, безопасность, производительность и другие перекрестные задачи. Advices (Advices), с другой стороны, больше связаны с AOP и обеспечивают перекрестную функциональность на уровне метода. В простых словах: - Advices — это действия, которые выполняются до, после или вокруг метода. - Перехватчики — это механизмы, которые “перехватывают” запросы, перед тем как они достигнут их назначения (например, контроллера в веб-приложении).

public class LoggingInterceptor extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response, Object handler) throws Exception {
System.out.println("Request URL: " + request.getRequestURL().toString());
return true;
}
@Override
public void postHandle(HttpServletRequest request,
HttpServletResponse response, Object handler, ModelAndView
modelAndView) throws Exception {
System.out.println("After handling the request");
}
@Override
public void afterCompletion(HttpServletRequest request,
HttpServletResponse response, Object handler, Exception ex) throws
Exception {
System.out.println("Request completed");
}
}


В этом примере у нас есть перехватчик, который регистрирует URL каждого входящего запроса, а также регистрирует информацию после обработки запроса и после завершения обработки запроса. Чтобы этот перехватчик работал, его нужно зарегистрировать:


@Configuration
public class AppConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LoggingInterceptor());
}
}


С перехватчиками вы можете реализовать множество полезных функций, таких как:

- Логирование всех входящих запросов. - Проверка аутентификации и авторизации. - Изменение ответов перед их отправкой пользователю.

- И многое другое!


Заключение

Таким образом, перехватчики – это мощный инструмент для управления входящими и исходящими запросами в вашем веб-приложении, в то время как Advices AOP позволяют управлять поведением методов в вашем приложении. Оба эти механизма являются чрезвычайно полезными для реализации перекрестной функциональности