添加拦截器配置
@Configuration
public class MvcConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(InterceptorEnum.DEMO_HANDLER);
}
}
- 使用
@Configuration 注解,使得被 springboot 加载为配置
- 实现 WebMvcConfigurer 接口,然后通过覆盖它提供的默认方法,来添加配置
- 对于拦截器来说就是重写 addInterceptors 方法
拦截器的具体实现
public enum InterceptorEnum implements HandlerInterceptor {
DEMO_HANDLER {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
HandlerMethod handlerMethod = (HandlerMethod) handler;
Class<?> controllerClass = handlerMethod.getBeanType();
Method controllerMethod = handlerMethod.getMethod();
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
}
};
}
- 我们可以把几种拦截器都放在这里
- preHandle 表示拦截之前
- postHandle 表示拦截之后
- afterCompletion 表示 DispatcherServlet 进行视图的渲染之后的逻辑
Last updated on 11/8/2020