使用注解 声明Bean的方式通过实现WebMvcConfigurer 注入(建议使用 方便简洁-可扩展性高:可以多实现只能单继承)
public class MvcConfigurerAdapter implements WebMvcConfigurer {
@Bean
public MultiComInterceptor adminLoginInterceptor() {
return new MultiComInterceptor();
}
}
@Slf4j
public class MultiCompanyInterceptor extends HandlerInterceptorAdapter {
private static final String xxx = "comId";
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
String requestURI = request.getRequestURI();
Integer comId = request.getIntHeader(xxx);
log.info("MultiComInterceptor url={} comId={}", requestURI, xxx);
if (comId!=null) {
ContextUtil.setComId(comId);
}
return true;
}
}
使用传统方案配置configuration 配置类继承WebMvcConfigurerAdapter 对象 扩展性低 容易出现注入失败的连锁问题
@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {
@Autowired
MultiCompanyInterceptor multiCompanyInterceptor;
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(multiCompanyInterceptor);
}
}
@Slf4j
@Service
public class MultiCompanyInterceptor extends HandlerInterceptorAdapter {
private static final String xxx = "comId";
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
String requestURI = request.getRequestURI();
Integer comId = request.getIntHeader(xxx);
log.info("MultiComInterceptor url={} comId={}", requestURI, xxx);
if (comId!=null) {
ContextUtil.setComId(comId);
}
return true;
}
}