Sobes.tech
Middle

¿Cuál es la diferencia entre Filters, Interceptors y Listeners en Spring?

sobes.tech AI

Respuesta de la IA

  • Filtros (Spring Web): Interceptan solicitudes y respuestas a nivel de servlet. Se utilizan para modificar la solicitud/respuesta, autenticación, autorización, registro antes de que la solicitud llegue al controlador. Se aplican a patrones de URL.

  • Interceptors (Spring MVC): Interceptan solicitudes a nivel de Spring MVC. Funcionan después de los filtros, pero antes de que la solicitud sea procesada por el controlador. Permiten realizar acciones antes (preHandle), después (postHandle) y después de completar el procesamiento de la solicitud (afterCompletion). Se usan para manipular el modelo, verificar permisos a nivel de controlador. Se aplican a métodos del controlador.

  • Listeners (Spring Context): Responden a eventos en el contexto de Spring. Permiten realizar acciones al iniciar o detener el contexto, al recibir un tipo específico de evento. Pueden usarse para inicializar recursos, limpiar datos o realizar tareas al cambiar el estado de la aplicación. Funcionan independientemente de las solicitudes web. Implementan la interfaz ApplicationListener.

Aquí una comparación en tabla:

Característica Filtros Interceptors Listeners
Nivel Servlet Spring MVC Spring Context
Cuándo funcionan Antes y después del servlet Antes, después del controlador y al finalizar Al ocurrir un evento
Se aplican a Patrones de URL Métodos del controlador Tipos de eventos
Propósito Modificación de solicitudes/respuestas, autenticación Manipulación del modelo, autorización a nivel de controlador Responder a eventos del contexto
Interfaz javax.servlet.Filter org.springframework.web.servlet.HandlerInterceptor org.springframework.context.ApplicationListener