
1. 依次建立3个拦截器
public class BootInterceptor implements HandlerInterceptor {
public boolean preHandle(HttpServletRequest req, HttpServletResponse resp, Object arg2) {
StackTraceElement se = Thread.currentThread().getStackTrace()[1];
LogCore.BASE.debug("{} {}", se.getClassName().substring(se.getClassName().lastIndexOf(".")), se.getMethodName());
return true;
}
public void afterCompletion(HttpServletRequest req, HttpServletResponse resp, Object arg2, Exception arg3)
throws Exception {
StackTraceElement se = Thread.currentThread().getStackTrace()[1];
LogCore.BASE.debug("{} {}", se.getClassName().substring(se.getClassName().lastIndexOf(".")), se.getMethodName());
}
public void postHandle(HttpServletRequest req, HttpServletResponse resp, Object arg2, ModelAndView arg3)
throws Exception {
StackTraceElement se = Thread.currentThread().getStackTrace()[1];
LogCore.BASE.debug("{} {}", se.getClassName().substring(se.getClassName().lastIndexOf(".")), se.getMethodName());
}
}
2. 配置拦截器
@Configuration
public class BootWebAppConfig extends WebMvcConfigurerAdapter {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new BootInterceptor()).addPathPatterns("/**");
registry.addInterceptor(new BootInterceptor2()).addPathPatterns("/**");
registry.addInterceptor(new BootInterceptor3()).addPathPatterns("/**");
super.addInterceptors(registry);
}
}
3. 访问一个URI查看拦截器的执行顺序
BootInterceptor preHandle
BootInterceptor2 preHandle
BootInterceptor3 preHandle
执行代码。。。。。
BootInterceptor3 postHandle
BootInterceptor2 postHandle
BootInterceptor postHandle
BootInterceptor3 afterCompletion
BootInterceptor2 afterCompletion
BootInterceptor afterCompletion