Springboot拦截器实现统计用户请求成功次数

本文介绍了一个在Springboot应用中利用拦截器记录用户成功请求的技术方案。通过实现HandlerInterceptor接口并重写afterCompletion方法,以及实现WebMvcConfigurer接口来添加自定义拦截器。记录的内容包括URI和用户ID,数据存储可选数据库或Redis缓存。

背景

技术栈为:Springboot,redis,JPA
用户每一次发起成功的请求都要求记录,需要记录的数据有:

  • URI
  • 用户id

方案

  • 使用拦截器对每次请求完毕的方法做拦截,实现HandlerInterceptor,重写aftercompletion方法
  • 实现WebMvcConfigurer,重写addInterceptors方法,将自定义的拦截器注册
  • 在拦截器中写具体的业务代码,选择入库或者加缓存
public class RequestRecordInterceptor implements HandlerInterceptor {
	......
	......
	@Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        log.info("请求结束。数据入库s");
        recordSuccessRequest(request);
        HandlerInterceptor.super.afterCompletion(request, response, handler, ex);
    }
    ......
    ......
}

@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
	......
	......
    @Override
    public void addInterceptors(@NonNull InterceptorRegistry registry) {
        if (!RunTimeConfig.INSTANCE.isOpenSkyWalkingAgent()) {
            registry.addInterceptor(new TraceIdInterceptor()).addPathPatterns("/api/**");
        }
        registry.addInterceptor(new RequestRecordInterceptor())
                .addPathPatterns("/**");
    }
    ......
    ......
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值