Sobes.tech
Middle

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