Sobes.tech
Middle

Mi a különbség a Filters, Interceptors és Listeners között a Spring-ben?

sobes.tech MI

Válasz az MI-től

  • Szűrők (Spring Web): A kérés és válasz szintjén fogják el a kérés- és válaszadatokat. A kérés/válasz módosítására, hitelesítésre, jogosultság ellenőrzésére, naplózásra használják, mielőtt a kérés eléri a kontrollert. URL-mintákhoz alkalmazzák.

  • Interceptors (Spring MVC): A kérés szintjén fogják el a Spring MVC-ben. A szűrők után, de mielőtt a kérés a kontrollert érné, működnek. (preHandle), (postHandle) és (afterCompletion) metódusokkal lehet műveleteket végrehajtani a kérés feldolgozása után. A modell manipulálására, a hozzáférési jogok ellenőrzésére használják a kontrollernél. A kontrollermetódusokra alkalmazzák.

  • Listeners (Spring Context): A Spring kontextus eseményeire reagálnak. A kontextus indításakor vagy leállításakor, vagy egy adott eseménytípus fogadásakor lehet velük műveleteket végezni. Erőforrások inicializálására, adatok tisztítására vagy feladatok végrehajtására használhatók az alkalmazás állapotának változásakor. Függetlenek a webkérésektől. Az ApplicationListener interfészt valósítják meg.

Íme egy táblázatos összehasonlítás:

Jellemző Szűrők Interceptors Listeners
Szint Servlet Spring MVC Spring Context
Mikor működnek A servlet előtt és után A kontrollert megelőzően, követően és a feldolgozás végén Esemény bekövetkeztekor
Alkalmazás URL-minták Kontrollermetódusok Eseménytípusok
Cél Kérések/válaszok módosítása, hitelesítés Modell manipulálása, jogosultság ellenőrzése kontrollerszinten Eseményekre reagálás a kontextusban
Interfész javax.servlet.Filter org.springframework.web.servlet.HandlerInterceptor org.springframework.context.ApplicationListener