
一、网关1.拦截器Interceptorpublic class UserInfoInterceptor implements HandlerInterceptor { Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { // 1.获取请求头中的用户信息 String userInfo request.getHeader(user-info); if (StrUtil.isBlank(userInfo)) { // 没有用户信息放行 return true; } // 2.保存到ThreadLocal UserContext.setUser(Long.valueOf(userInfo)); // 3.放行 return true; } Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { // 移除用户 UserContext.removeUser(); } }继承handlerinterceptor,实现俩个方法pre在controller之前。注册拦截器Configuration public class MvcConfig implements WebMvcConfigurer { Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new UserInfoInterceptor()); } }此时配置类只在当前模块下生效要想在其他模块下使用必须被spring扫描包扫到。在resource下的注册xml写上org.springframework.boot.autoconfigure.EnableAutoConfiguration\ com.hmall.common.config.MyBatisConfig,\ com.hmall.common.config.MqConfig,\ com.hmall.common.config.MvcConfig此时运行gateway报错。此时配置类在网关类生效。但网关不是springmvc的类采用spring自动装配的原理条件配置springmvc的核心类ConditionalOnClass(DispatcherServlet.class)ConditionalOnClass(DispatcherServlet.class)