Aký je rozdiel medzi Filters, Interceptors a Listeners v Spring?
sobes.tech AI
Odpoveď od AI
-
Filtre (Spring Web): Zachytávajú požiadavky a odpovede na úrovni servleta. Používajú sa na modifikáciu požiadavky/odpovede, autentifikáciu, autorizáciu, logovanie predtým, než požiadavka dosiahne kontrolér. Aplikujú sa na URL vzory.
-
Interceptors (Spring MVC): Zachytávajú požiadavky na úrovni Spring MVC. Fungujú po filtroch, ale pred tým, než je požiadavka spracovaná kontrolérom. (
preHandle), (postHandle) a (afterCompletion) umožňujú vykonávať akcie po spracovaní požiadavky. Používajú sa na manipuláciu s modelom, kontrolu práv na úrovni kontroléru. Aplikujú sa na metódy kontroléru. -
Listeners (Spring Context): Reagujú na udalosti v kontexte Spring. Umožňujú vykonávať akcie pri spustení alebo zastavení kontextu, pri prijatí špecifického typu udalosti. Môžu byť použité na inicializáciu zdrojov, čistenie dát alebo vykonávanie úloh pri zmene stavu aplikácie. Fungujú nezávisle od webových požiadaviek. Implementujú rozhranie
ApplicationListener.
Tu je porovnanie v tabuľke:
| Vlastnosť | Filtre | Interceptors | Listeners |
|---|---|---|---|
| Úroveň | Servlet | Spring MVC | Spring Context |
| Kedy fungujú | Pred a po servlet | Pred, po a pri dokončení | Pri udalosti |
| Používajú sa na | URL vzory | Metódy kontroléra | Typy udalostí |
| Cieľ | Modifikácia požiadaviek/odpovedí, autentifikácia | Manipulácia s modelom, autorizácia na úrovni kontroléra | Reagovanie na udalosti kontextu |
| Rozhranie | javax.servlet.Filter |
org.springframework.web.servlet.HandlerInterceptor |
org.springframework.context.ApplicationListener |