Koja je razlika između Filters, Interceptors i Listeners u Springu?
sobes.tech АИ
Одговор од АИ
-
Filters (Spring Web): Presreću zahteve i odgovore na nivou servlet-a. Koriste se za modifikaciju zahteva/odgovora, autentikaciju, autorizaciju, logovanje pre nego što zahtev stigne do kontrolera. Primaju se na URL šablonima.
-
Interceptors (Spring MVC): Presreću zahteve na nivou Spring MVC. Funkcionišu nakon filtera, ali pre obrade zahteva od strane kontrolera. Omogućavaju izvršenje akcija pre (
preHandle), posle (postHandle) i nakon završetka obrade zahteva (afterCompletion). Koriste se za manipulaciju modelom, proveru prava na nivou kontrolera. Primaju se na metode kontrolera. -
Listeners (Spring Context): Reaguju na događaje u Spring kontekstu. Omogućavaju izvršenje akcija pri pokretanju ili zaustavljanju konteksta, pri primanju određenog tipa događaja. Mogu se koristiti za inicijalizaciju resursa, čišćenje podataka ili izvršenje zadataka pri promeni stanja aplikacije. Funkcionišu nezavisno od web zahteva. Implementiraju interfejs
ApplicationListener.
Evo poređenja u tabeli:
| Osobina | Filters | Interceptors | Listeners |
|---|---|---|---|
| Nivo | Servlet | Spring MVC | Spring Context |
| Kada rade | Pre i posle servlet-a | Pre, posle i pri završetku | Pri događaju |
| Primaju se na | URL šablonima | Metodima kontrolera | Tipovima događaja |
| Svrha | Modifikacija zahteva/odgovora, autentikacija | Manipulacija modelom, autorizacija na nivou kontrolera | Reagovanje na događaje konteksta |
| Interfejs | javax.servlet.Filter |
org.springframework.web.servlet.HandlerInterceptor |
org.springframework.context.ApplicationListener |