springboot 拦截器取不到dubbo的服务类信息

假如这是你定义的拦截器:

/**
 * 用户登录处理拦截器
 */
public class LoginInterceptor implements HandlerInterceptor{
	
	@Reference
	private TokenService tokenService;
	
	@Override
	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
		
		// 前处理,执行handler之前执行此方法。
		//返回true,放行	false:拦截
		return false;
	}
	
	@Override
	public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView)
			throws Exception {
		//handler执行之后,返回ModeAndView之前
		
	}
	
	@Override
	public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
			throws Exception {
		//完成处理,返回ModelAndView之后。
		//可以再此处理异常
		
	}
}

解决办法:
配置拦截器的,需要重新写一个获取拦截器LoginInterceptor的方法,在方法上面加上@Bean注解,这样就可以在LoginInterceptor中拿到TokenService的对象啦~~

/**
 * 拦截器配置
 */
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {

	@Override
	public void addInterceptors(InterceptorRegistry registry) {
		// 登录状态拦截器
		registry.addInterceptor(loginInterceptor()).addPathPatterns("/cart/**");
	}

	@Bean
	public LoginInterceptor loginInterceptor() {
		return new LoginInterceptor();
	}
}
发布了22 篇原创文章 · 获赞 6 · 访问量 506

猜你喜欢

转载自blog.csdn.net/qq_33732195/article/details/103962230