Estou incluindo este tópico como um informativo.
Nas versões mais recentes do Spring (a que estou usando é a versão 2.4.0), a classe relacionada no título (HandlerInterceptorAdapter) está depreciada, segundo o javadoc da classe.
A dependência que foi baixada com essa versão é a "spring-webmvc-5.3.1.jar" (na qual a classe em questão faz parte), e fala que podemos, ao invés de estender essa classe, implementar a interface "HandlerInterceptor" ou a interface "AsyncHandlerInterceptor" (que implementa a interface "HandlerInterceptor", mas tem um método extra: "afterConcurrentHandlingStarted").
Experimentei implementar a interface "HandlerInterceptor", e a aplicação funcionou sem problemas.
Inclusive, os métodos sobrescritos na aula (preHandler e afterCompletion) são os mesmos (possuem as mesmas assinaturas).
import java.time.Duration;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.HandlerInterceptor;
public class InterceptadorDeAcessos implements HandlerInterceptor {
public static List<Acesso> acessos = new ArrayList<Acesso>();
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
Acesso acesso = new Acesso();
acesso.path = request.getRequestURI();
acesso.data = LocalDateTime.now();
request.setAttribute("acesso", acesso);
return true;
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
throws Exception {
Acesso acesso = (Acesso) request.getAttribute("acesso");
acesso.duracao = Duration.between(acesso.data, LocalDateTime.now());
acessos.add(acesso);
}
public static class Acesso {
private String path;
private LocalDateTime data;
private Duration duracao;
/* Getters e Setters aqui... */
}
}
E não precisei modificar nada na classe de configuração, a WebConfig.
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
import br.com.alura.mvc.mudi.interceptor.InterceptadorDeAcessos;
@Configuration
public class WebConfig extends WebMvcConfigurationSupport {
@Override
protected void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new InterceptadorDeAcessos()).addPathPatterns("/**");
}
}