Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Acessos não são gravados

Testei conforme o video porem ele não armazena nenhuma informação em acessos ele so me da um array em branco, segue codigo do Interceptor

package br.com.alura.mvc.mudi.interceptor;

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.handler.HandlerInterceptorAdapter;

import br.com.alura.mvc.mudi.interceptor.InterceptadorDeAcessos.Acesso;

public class InterceptadorDeAcessos extends HandlerInterceptorAdapter{

    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;
        public String getPath() {
            return path;
        }
        public void setPath(String path) {
            this.path = path;
        }
        public LocalDateTime getData() {
            return data;
        }
        public void setData(LocalDateTime data) {
            this.data = data;
        }
        public Duration getDuracao() {
            return duracao;
        }
        public void setDuracao(Duration duracao) {
            this.duracao = duracao;
        }

    }
}
1 resposta
solução!

o meu resolveu quando eu verifiquei a seguinte classe:

package br.com.alura.mvc.mudi;

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 ----------------------------------------------------------------------------> ficou faltando essa anotation aqui, depois que inseri ela funcionou public class WebConfig extends WebMvcConfigurationSupport{

@Override
protected void addInterceptors(InterceptorRegistry registry) {
    registry.addInterceptor(new InterceptadorDeAcessos()).addPathPatterns("/**");
}

}

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software