Jaký je rozdíl mezi Filters, Interceptors a Listeners v Springu?
sobes.tech AI
Odpověď od AI
-
Filtry (Spring Web): Zachytávají požadavky a odpovědi na úrovni servlety. Používají se k modifikaci požadavku/odpovědi, autentizaci, autorizaci, logování před tím, než požadavek dosáhne kontroléru. Aplikují se na URL vzory.
-
Interceptors (Spring MVC): Zachytávají požadavky na úrovni Spring MVC. Fungují po filtrech, ale před tím, než je požadavek zpracován kontrolérem. Umožňují provádět akce před (
preHandle), po (postHandle) a po dokončení zpracování požadavku (afterCompletion). Používají se k manipulaci s modelem, kontrole přístupových práv na úrovni kontroléru. Aplikují se na metody kontroléru. -
Listeners (Spring Context): Reagují na události v kontextu Spring. Umožňují provádět akce při spuštění nebo zastavení kontextu, při přijetí určitého typu události. Mohou být použity k inicializaci zdrojů, čištění dat nebo provádění úkolů při změně stavu aplikace. Fungují nezávisle na webových požadavcích. Implementují rozhraní
ApplicationListener.
Zde je srovnání v tabulce:
| Vlastnost | Filtry | Interceptors | Listeners |
|---|---|---|---|
| Úroveň | Servlet | Spring MVC | Spring Context |
| Kdy fungují | Před a po servletu | Před, po a při dokončení | Při vzniku události |
| Použití na | URL vzory | Metody kontroléru | Typy událostí |
| Účel | Modifikace požadavků/odpovědí, autentizace | Manipulace s modelem, autorizace na úrovni kontroléru | Reakce na události kontextu |
| Rozhraní | javax.servlet.Filter |
org.springframework.web.servlet.HandlerInterceptor |
org.springframework.context.ApplicationListener |