Care este diferența dintre Filtre, Interceptori și Listeners în Spring?
sobes.tech AI
Răspuns de la AI
-
Filtre (Spring Web): Interceptează solicitările și răspunsurile la nivel de servlet. Sunt utilizate pentru modificarea solicitării/răspunsului, autentificare, autorizare, înregistrare înainte ca solicitarea să ajungă la controler. Se aplică la modele URL.
-
Interceptors (Spring MVC): Interceptează solicitările la nivel de Spring MVC. Funcționează după filtre, dar înainte ca solicitarea să fie procesată de controler. Permite efectuarea de acțiuni înainte (
preHandle), după (postHandle) și după finalizarea procesării solicitării (afterCompletion). Sunt folosite pentru manipularea modelului, verificarea drepturilor la nivel de controler. Se aplică metodelor controlerului. -
Listeners (Spring Context): Răspund la evenimentele din contextul Spring. Permite efectuarea de acțiuni la pornirea sau oprirea contextului, la primirea unui anumit tip de eveniment. Pot fi folosite pentru inițializarea resurselor, curățarea datelor sau executarea de sarcini la schimbarea stării aplicației. Funcționează independent de solicitările web. Implementază interfața
ApplicationListener.
Iată o comparație în tabel:
| Caracteristică | Filtre | Interceptors | Listeners |
|---|---|---|---|
| Nivel | Servlet | Spring MVC | Spring Context |
| Când funcționează | Înainte și după servlet | Înainte, după și la finalizarea | La apariția unui eveniment |
| Se aplică | Modele URL | Metodele controlerului | Tipurile de evenimente |
| Scop | Modificarea solicitărilor/răspunsurilor, autentificare | Manipularea modelului, autorizare la nivel de controler | Reacționarea la evenimentele contextului |
| Interfață | javax.servlet.Filter |
org.springframework.web.servlet.HandlerInterceptor |
org.springframework.context.ApplicationListener |