Sobes.tech
Middle

Каква е разликата между 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