Sobes.tech
Middle

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 ApplicationListener są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