Sobes.tech
Middle

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