Qual é a diferença entre Filtros, Interceptores e Listeners no Spring?
sobes.tech IA
Resposta da IA
-
Filtros (Spring Web): Interceptam pedidos e respostas ao nível do servlet. São usados para modificar o pedido/resposta, autenticação, autorização, registo antes de o pedido chegar ao controlador. Aplicam-se a padrões de URL.
-
Interceptors (Spring MVC): Interceptam pedidos ao nível do Spring MVC. Funcionam após os filtros, mas antes de o pedido ser processado pelo controlador. Permitem realizar ações antes (
preHandle), depois (postHandle) e após a conclusão do processamento do pedido (afterCompletion). São usados para manipular o modelo, verificar permissões ao nível do controlador. Aplicam-se a métodos do controlador. -
Listeners (Spring Context): Respondem a eventos no contexto do Spring. Permitem realizar ações ao iniciar ou parar o contexto, ao receber um tipo específico de evento. Podem ser usados para inicializar recursos, limpar dados ou executar tarefas ao alterar o estado da aplicação. Funcionam independentemente de pedidos web. Implementam a interface
ApplicationListener.
Aqui está uma comparação em tabela:
| Característica | Filtros | Interceptors | Listeners |
|---|---|---|---|
| Nível | Servlet | Spring MVC | Spring Context |
| Quando funcionam | Antes e depois do servlet | Antes, depois do controlador e ao terminar | Quando ocorre um evento |
| Aplicam-se a | Padrões de URL | Métodos do controlador | Tipos de eventos |
| Propósito | Modificação de pedidos/respostas, autenticação | Manipulação do modelo, autorização ao nível do controlador | Responder a eventos do contexto |
| Interface | javax.servlet.Filter |
org.springframework.web.servlet.HandlerInterceptor |
org.springframework.context.ApplicationListener |