Каква е разликата между Filters, Interceptors и Listeners в Spring?
sobes.tech AI
Отговор от AI
-
Филтри (Spring Web): Засичат заявки и отговори на ниво сървлет. Използват се за модифициране на заявката/отговора, автентикация, авторизация, логиране преди заявката да достигне контролера. Приложими към URL шаблони.
-
Interceptors (Spring MVC): Засичат заявки на ниво Spring MVC. Работят след филтрите, но преди заявката да бъде обработена от контролера. Позволяват действия пред (
preHandle), след (postHandle) и след завършване на обработката (afterCompletion). Използват се за манипулиране на модела, проверка на права на ниво контролер. Приложими към методите на контролера. -
Listeners (Spring Context): Реагират на събития в контекста на Spring. Позволяват изпълнение на действия при стартиране или спиране на контекста, при получаване на определен тип събитие. Могат да се използват за инициализация на ресурси, почистване на данни или изпълнение на задачи при промяна на състоянието на приложението. Работят независимо от уеб заявките. Реализират интерфейса
ApplicationListener.
Ето сравнителна таблица:
| Характеристика | Филтри | Interceptors | Listeners |
|---|---|---|---|
| Ниво | Servlet | Spring MVC | Spring Context |
| Кога работят | Преди и след сървлета | Преди, след и при завършване | При възникване на събитие |
| Приложимо към | URL шаблони | Методи на контролера | Типове събития |
| Цел | Модифициране на заявки/отговори, автентикация | Манипулиране на модела, проверка на права на ниво контролер | Реагиране на събития в контекста |
| Интерфейс | javax.servlet.Filter |
org.springframework.web.servlet.HandlerInterceptor |
org.springframework.context.ApplicationListener |