WebMvcConfigurerAdapter配置类其实是Spring内部的一种配置方式,采用JavaBean的形式来代替传统的xml配置文件形式进行针对框架个性化定制。
继承WebMvcConfigurerAdapter
本文是继承WebMvcConfigurerAdapter,可实现WebMvcConfigurer 或者 继承 WebMvcConfigurationSupport
@Component
public class WebConfiguration extends WebMvcConfigurerAdapter {
@Override
public void addInterceptors(InterceptorRegistry registry) {
// 拦截器执行顺序,按照配置的顺序执行
registry.addInterceptor(testInterceptor()).addPathPatterns("/**");
super.addInterceptors(registry);
}
@Bean
public HandlerInterceptor testInterceptor() {
TestInterceptor testInterceptor = new TestInterceptor();
return testInterceptor;
}
继承HandlerInterceptorAdapter
或实现 HandlerInterceptor
public class TestInterceptor extends HandlerInterceptorAdapter {
// 拦截器请求前调用
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object o) throws Exception {
// to do something.....
return true;
}
// 后处理回调方法,实现处理器的后处理(但在渲染视图之前)
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
}
// 整个请求处理完毕回调方法,即在视图渲染完毕时回调
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
}
// 方法用于处理异步请求,当Controller中有异步请求方法的时候会触发该方法时,异步请求先支持preHandle、然后执行afterConcurrentHandlingStarted。异步线程完成之后执行preHandle、postHandle、afterCompletion
public void afterConcurrentHandlingStarted(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
}
}