Sobes.tech
Middle

Jaka jest różnica między Filters, Interceptors a Listeners w Spring?

sobes.tech AI

Odpowiedź od AI

  • Filtry (Spring Web): Przechwytują żądania i odpowiedzi na poziomie serwletu. Służą do modyfikacji żądania/odpowiedzi, uwierzytelniania, autoryzacji, logowania przed dotarciem żądania do kontrolera. Są stosowane do wzorców URL.

  • Interceptors (Spring MVC): Przechwytują żądania na poziomie Spring MVC. Działają po filtrach, ale przed obsługą żądania przez kontroler. Pozwalają na wykonywanie działań przed (preHandle), po (postHandle) i po zakończeniu obsługi żądania (afterCompletion). Używane do manipulacji modelem, sprawdzania uprawnień na poziomie kontrolera. Są stosowane do metod kontrolera.

  • Listeners (Spring Context): Reagują na zdarzenia w kontekście Spring. Pozwalają na wykonywanie działań podczas uruchamiania lub zatrzymywania kontekstu, przy otrzymaniu określonego typu zdarzenia. Mogą być używane do inicjalizacji zasobów, czyszczenia danych lub wykonywania zadań przy zmianie stanu aplikacji. Działają niezależnie od żądań webowych. Implementują interfejs ApplicationListener.

Oto porównanie w formie tabeli:

Cecha Filtry Interceptors Listeners
Poziom Servlet Spring MVC Spring Context
Kiedy działają Przed i po serwlecie Przed, po i po zakończeniu obsługi Przy wystąpieniu zdarzenia
Dotyczą Wzorów URL Metod kontrolera Typów zdarzeń
Cel Modyfikacja żądań/odpowiedzi, uwierzytelnianie Manipulacja modelem, autoryzacja na poziomie kontrolera Reagowanie na zdarzenia kontekstu
Interfejs javax.servlet.Filter org.springframework.web.servlet.HandlerInterceptor org.springframework.context.ApplicationListener