Was ist der Unterschied zwischen Filters, Interceptors und Listeners in Spring?
sobes.tech KI
Antwort von AI
-
Filter (Spring Web): Abfangen von Anfragen und Antworten auf Servlet-Ebene. Wird verwendet, um Anfragen/Antworten zu modifizieren, Authentifizierung, Autorisierung, Protokollierung, bevor die Anfrage den Controller erreicht. Wird auf URL-Mustern angewendet.
-
Interceptors (Spring MVC): Abfangen von Anfragen auf Spring MVC-Ebene. Funktionieren nach den Filtern, aber vor der Verarbeitung durch den Controller. Ermöglichen Aktionen vor (
preHandle), nach (postHandle) und nach Abschluss der Anfrageverarbeitung (afterCompletion). Werden verwendet, um das Modell zu manipulieren, Zugriffsrechte auf Controller-Ebene zu prüfen. Werden auf Controller-Methoden angewendet. -
Listeners (Spring Context): Reagieren auf Ereignisse im Spring-Kontext. Ermöglichen Aktionen beim Starten oder Stoppen des Kontexts, beim Empfang eines bestimmten Ereignistyps. Können zur Initialisierung von Ressourcen, Bereinigung von Daten oder Ausführung von Aufgaben bei Änderungen des Anwendungszustands verwendet werden. Arbeiten unabhängig von Web-Anfragen. Implementieren die Schnittstelle
ApplicationListener.
Hier ein tabellarischer Vergleich:
| Merkmal | Filters | Interceptors | Listeners |
|---|---|---|---|
| Ebene | Servlet | Spring MVC | Spring Context |
| Wann sie arbeiten | Vor und nach dem Servlet | Vor, nach dem Controller und bei Abschluss | Beim Auftreten eines Ereignisses |
| Anwendbar auf | URL-Muster | Controller-Methoden | Ereignistypen |
| Zweck | Modifikation von Anfragen/Antworten, Authentifizierung | Manipulation des Modells, Autorisierung auf Controller-Ebene | Reaktion auf Kontextereignisse |
| Schnittstelle | javax.servlet.Filter |
org.springframework.web.servlet.HandlerInterceptor |
org.springframework.context.ApplicationListener |