过滤器注入Bean
/** * 登录拦截器 * @author swt */ @Component public class AccessTokenInterceptor implements HandlerInterceptor { @Autowired private LoginInfoService loginInfoService; @Override public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception { // loginInfoService = null ??? return true; } @Override public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception { // 请求处理之后进行调用,但是在视图被渲染之前 } @Override public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception { // 在整个请求结束之后被调用,也就是在DispatcherServlet 渲染了对应的视图之后执行(主要是用于进行资源清理工作) } }
错误的写法
/** * 过滤器 * @author swt */ @Configuration public class MvcConfiguration extends WebMvcConfigurerAdapter { @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new AccessTokenInterceptor ()).addPathPatterns("/**"); } }
正确的写法
/** * 过滤器 * @author swt */ @Configuration public class MvcConfiguration extends WebMvcConfigurerAdapter { @Autowired private AccessTokenInterceptor accessTokenInterceptor; @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(accessTokenInterceptor).addPathPatterns("/**"); } }