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 |