背景
技术栈为: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("/**");
}
......
......
}
本文介绍了一个在Springboot应用中利用拦截器记录用户成功请求的技术方案。通过实现HandlerInterceptor接口并重写afterCompletion方法,以及实现WebMvcConfigurer接口来添加自定义拦截器。记录的内容包括URI和用户ID,数据存储可选数据库或Redis缓存。
3624

被折叠的 条评论
为什么被折叠?



