Quelle est la différence entre Filters, Interceptors et Listeners dans Spring?
sobes.tech IA
Réponse de l'IA
-
Filtres (Spring Web): Interceptent les requêtes et réponses au niveau du servlet. Utilisés pour modifier la requête/réponse, l'authentification, l'autorisation, la journalisation avant que la requête n'atteigne le contrôleur. S'appliquent aux modèles d'URL.
-
Intercepteurs (Spring MVC): Interceptent les requêtes au niveau de Spring MVC. Fonctionnent après les filtres, mais avant que la requête ne soit traitée par le contrôleur. Permettent d'effectuer des actions avant (
preHandle), après (postHandle) et après la fin du traitement de la requête (afterCompletion). Utilisés pour manipuler le modèle, vérifier les droits d'accès au niveau du contrôleur. S'appliquent aux méthodes du contrôleur. -
Listeners (Spring Context): Réagissent aux événements dans le contexte Spring. Permettent d'effectuer des actions lors du démarrage ou de l'arrêt du contexte, lors de la réception d'un type spécifique d'événement. Peuvent être utilisés pour l'initialisation des ressources, le nettoyage des données ou l'exécution de tâches lors du changement d'état de l'application. Fonctionnent indépendamment des requêtes web. Implémentent l'interface
ApplicationListener.
Voici une comparaison sous forme de tableau:
| Caractéristique | Filtres | Intercepteurs | Listeners |
|---|---|---|---|
| Niveau | Servlet | Spring MVC | Spring Context |
| Quand ils fonctionnent | Avant et après le servlet | Avant, après le contrôleur et à la fin | Lors de l'événement |
| S'appliquent à | Modèles d'URL | Méthodes du contrôleur | Types d'événements |
| But | Modification des requêtes/réponses, authentification | Manipulation du modèle, autorisation au niveau du contrôleur | Réagir aux événements du contexte |
| Interface | javax.servlet.Filter |
org.springframework.web.servlet.HandlerInterceptor |
org.springframework.context.ApplicationListener |