spring boot 实现多个 interceptor 并指定顺序

首先咱们建立Interceptor,实现HandlerInterceptor覆写方法:
1、下面我建立了三个拦截器:
MyInterceptor,UserInterceptor,StudentInterceptorapp

@Component
public class MyInterceptor implements HandlerInterceptor {ide

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

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

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

@Component
public class StudentInterceptor implements HandlerInterceptor {blog


@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
System.out.println("StudentInterceptor preHandle");
return true;
}队列

@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
System.out.println("StudentInterceptor postHandle");io

}class

@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
System.out.println("StudentInterceptor afterCompletion");test

}
}

@Component
public class UserInterceptor implements HandlerInterceptor {model

@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {

System.out.println("UserInterceptor preHandle");
return true;
}

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

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

2、把拦截器加入到拦截器队列 实现WebMvcConfigurer

@Configuration
public class MyAdapter implements WebMvcConfigurer {

@Resource
private MyInterceptor myInterceptor;

@Resource
private UserInterceptor userInterceptor;

@Resource
private StudentInterceptor studentInterceptor;

@Override
public void addInterceptors(InterceptorRegistry registry) {
//1.加入的顺序就是拦截器执行的顺序,
//2.按顺序执行全部拦截器的preHandle
//3.全部的preHandle 执行完再执行所有postHandle 最后是postHandle
registry.addInterceptor(studentInterceptor).addPathPatterns("/**");
registry.addInterceptor(myInterceptor).addPathPatterns("/**");
registry.addInterceptor(userInterceptor).addPathPatterns("/**");

}
}

3、最后访问controller

@RestController
public class TestController {

@RequestMapping("/test")
public String test() {
return "test";
}

}

 

 

————————————————版权声明:本文为CSDN博主「小贼驴」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处连接及本声明。原文连接:https://blog.csdn.net/weixin_38362455/article/details/85029748

相关文章
相关标签/搜索