Wat is het verschil tussen Filters, Interceptors en Listeners in Spring?
sobes.tech AI
Antwoord van AI
-
Filters (Spring Web): Vangen verzoeken en antwoorden op servletniveau. Gebruikt voor het wijzigen van verzoek/antwoord, authenticatie, autorisatie, logging voordat het verzoek de controller bereikt. Toegepast op URL-patronen.
-
Interceptors (Spring MVC): Vangen verzoeken op Spring MVC-niveau. Werken na Filters, maar voordat het verzoek door de controller wordt verwerkt. Stellen acties in vóór (
preHandle), na (postHandle) en na voltooiing van de verwerking (afterCompletion). Gebruikt voor modellering, toegangscontrole op controllerniveau. Toegepast op controller-methoden. -
Listeners (Spring Context): Reageren op gebeurtenissen in de Spring-context. Stellen acties in bij starten of stoppen van de context, bij ontvangst van een bepaald type gebeurtenis. Kunnen worden gebruikt voor resource-initialisatie, gegevensopruiming of taken bij statuswijzigingen van de applicatie. Werken onafhankelijk van webverzoeken. Implementeert
ApplicationListener.
Hier een tabelvergelijking:
| Kenmerk | Filters | Interceptors | Listeners |
|---|---|---|---|
| Niveau | Servlet | Spring MVC | Spring Context |
| Wanneer actief | Voor en na servlet | Voor, na en bij voltooiing van controller | Bij gebeurtenis |
| Toepassing op | URL-patronen | Controller-methoden | Gebeurttypen |
| Doel | Wijzigen van verzoeken/antwoorden, authenticatie | Manipulatie van model, autorisatie op controllerniveau | Reageren op contextgebeurtenissen |
| Interface | javax.servlet.Filter |
org.springframework.web.servlet.HandlerInterceptor |
org.springframework.context.ApplicationListener |