【springboot】通过拦截器全局监听请求

目的:全局监控接口请求情况

创建拦截器类


public class RequestInterceptor implements HandlerInterceptor {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        return HandlerInterceptor.super.preHandle(request, response, handler);
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        HandlerInterceptor.super.postHandle(request, response, handler, modelAndView);
    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        ...
        TrackUtil.report(info); // 通过工具类调用服务
    }
}

添加拦截器

@Configuration
public class WebConfig implements WebMvcConfigurer {
    @Override
    public void addInterceptors(InterceptorRegistry interceptorRegistry) {
        interceptorRegistry.addInterceptor(...); // 其他拦截器
        interceptorRegistry.addInterceptor(new RequestInterceptor()); // 添加本拦截器
    }
}

拦截器类调用Service服务

借助工具类

@Component
public class TrackUtil {
    
    public static TrackUtil trackUtil; //声明对象
    
    @Autowired //注入
    TrackService trackService;

    @PostConstruct //初始化
    public void init() {
        trackUtil = this;
        trackUtil.trackService = this.trackService;
    }


    public static void report(Object info){
        trackUtil.trackService.report(info);
    }
}

你可能感兴趣的:(后端,spring,boot,java)