¿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 |