记录拦截器不起作用

时间:2017-07-23 22:36:03

标签: spring-boot interceptor

问题是似乎没有调用拦截器。

@Component
public class LoggingInterceptor extends HandlerInterceptorAdapter {

    private static final Logger LOGGER = LogManager.getLogger(MethodHandles.lookup().lookupClass());

    @Overridegre
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object object, Exception arg3)
            throws Exception {
        LOGGER.info("Request Completed!");
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object object, ModelAndView model)
            throws Exception {
        LOGGER.info("Method executed");
    }

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object object) throws Exception {
        LOGGER.info("Before process request");
        return true;
    }

}

@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {

    @Autowired
    LoggingInterceptor loggingInterceptor;

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(loggingInterceptor);
    }
}

我找到了例子,但他们没有工作!

我尝试添加开始和结束日志以及性能日志。好吗?

@SpringBootApplication(scanBasePackages = { "com.sofelite.proj.controllers" })
public class ProjApplication extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(GrentyApplication.class);
    }

    public static void main(String[] args) throws Exception {
        SpringApplication.run(GrentyApplication.class, args);
    }
}

这是Application类 请注意,在com.sofelite.proj中,我有所有应用程序包,如控制器和拦截器。

1 个答案:

答案 0 :(得分:0)

矿井正在工作:

 @Configuration
   public class LoggingConfiguration extends WebMvcConfigurerAdapter  {  

     @Override
     public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new LoggingInterceptor());
     }

 }

和LoggingInterceptor类:

@Component
public class LoggingInterceptor extends HandlerInterceptorAdapter {

   private static final Logger LOGGER = 
 LoggerFactory.getLogger(LoggingInterceptor.class);

  @Override
  public boolean preHandle(HttpServletRequest request, HttpServletResponse response, 
  Object handler)
        throws Exception {
    long startTime = System.currentTimeMillis();
    LOGGER.info("Request URL: " + request.getRequestURL());
    LOGGER.info("Start Time: " + System.currentTimeMillis());

    request.setAttribute("startTime", startTime);
    return true;
}

@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, 
        Object handler, ModelAndView modelAndView) throws Exception {

     StringBuilder sb = new StringBuilder();

     sb.append("!Status: "+response.getStatus()+"\n");
     sb.append("!URL: "+ request.getRequestURL());
     sb.append("!Method: " + request.getMethod() + "\n");
     LOGGER.info(sb.toString());

}

@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, 

    long endTime = System.currentTimeMillis();
    System.out.println("URL Request Completed. End Time: "+ endTime);
}

}