Sobes.tech
Middle

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