使用步骤:

  1、实现HandlerInterceptor接口,该接口有三个方法preHandle 、postHandle 、afterCompletion 

   (1)preHandle在controller执行之前调用

   (2)postHandle在controller执行之后,页面渲染之前调用

   (3)afterCompletion在页面渲染之后调用,一般用于资源清理操作

  2、继承WebMvcConfigurationSupport或者实现WebMvcConfigurer,重写addInterceptors方法。把拦截器加进去。

演示如下:

  1、创建拦截器类

public class LogHandlerInterceptor implements HandlerInterceptor {

    @Override
    public boolean preHandle(HttpServletRequest request,HttpServletResponse response,
                             Object handler) throws Exception {
        System.out.println("==preHandle=="+handler.getClass().getName());
        return true;
    }

    @Override
    public void postHandle(HttpServletRequest request,HttpServletResponse response,
                           Object handler,ModelAndView modelAndView) throws Exception {
        System.out.println("==postHandle=="+handler.getClass().getName());
    }

    @Override
    public void afterCompletion(HttpServletRequest request,HttpServletResponse response,
                                Object handler, Exception ex)throws Exception {
        System.out.println("==afterCompletion=="+handler.getClass().getName());
    }
}

  2、添加拦截器类

  1)使用WebMvcConfigurationSupport的方式

@Configuration
public class MyWebMvcConfigurationSupport extends WebMvcConfigurationSupport{

    @Override
    protected void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new LogHandlerInterceptor());
    }
}

  2)使用WebMvcConfigurer的方式

@Configuration
public class MyWebMvcConfigurer implements WebMvcConfigurer {

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

  3、添加测试类

@RestController
public class TestController {

    @RequestMapping("/user/home")
    public String home(){
        System.out.println("============home=============");
        return "user home";
    }
}

  浏览器输入:http://127.0.0.1:8080/user/home,控制台结果如下:

  

spring boot 拦截器 没起作用 springboot拦截器posthandle_System