Kuo skiriasi Filters, Interceptors ir Listeners Spring?
sobes.tech AI
Atsakymas iš AI
-
Filtrai (Spring Web): Perima surinkimus ir atsakymus servleto lygyje. Naudojami užklausos/atsakymo modifikavimui, autentifikacijai, autorizacijai, žurnalo įrašymui iki to, kol užklausa pasieks kontrolerį. Taikomi URL šablonams.
-
Interceptoriai (Spring MVC): Perima užklausas Spring MVC lygyje. Veikia po filtro, bet iki to, kol užklausa apdorojama kontroleryje. Leidžia atlikti veiksmus prieš (
preHandle), po (postHandle) ir po užklausos apdorojimo pabaigos (afterCompletion). Naudojami modelio manipuliacijai, prieigos teisių patikrinimui kontrolerio lygyje. Taikomi kontrolerio metodams. -
Listeneriai (Spring Context): Reaguoja į įvykius Spring kontekste. Leidžia vykdyti veiksmus paleidžiant arba stabdant kontekstą, gaunant tam tikro tipo įvykį. Gali būti naudojami išteklių inicijavimui, duomenų valymui arba užduočių vykdymui keičiantis programos būsenai. Veikia nepriklausomai nuo žiniatinklio užklausų. Įgyvendina
ApplicationListenersąsają.
Štai palyginamoji lentelė:
| Žymuo | Filtrai | Interceptoriai | Listeneriai |
|---|---|---|---|
| Lygis | Servletas | Spring MVC | Spring kontekstas |
| Kada veikia | Iki ir po servleto | Iki, po kontrolerio ir užbaigimo | Atsiradus įvykiui |
| Taikoma prie | URL šablonai | Kontrolerio metodai | Įvykių tipai |
| Paskirtis | Užklausos/atsakymo modifikavimas, autentifikacija | Modelio manipuliavimas, autorizacija kontrolerio lygyje | Reagavimas į konteksto įvykius |
| Sąsaja | javax.servlet.Filter |
org.springframework.web.servlet.HandlerInterceptor |
org.springframework.context.ApplicationListener |