20200423 订单幂等处理

订单幂等性

1、联合唯一索引,进行去重复;用户id+商品id建立唯一索引。

2、通过状态机保证接口幂等;后端可以根据不同的状态去保证幂等性,比如在退款的时候,一定要保证这笔订单是已支付的状态。

3、TOKEN机制,针对客户端连续点击或者调用方的超时重试等情况,例如提交订单,此种操作就可以用Token的机制实现防止重复提交。TOKEN机制如何实现?简单的说就是调用方在调用接口的时候先向后端请求一个全局ID(TOKEN),请求的时候携带这个全局ID一起请求,后端需要对这个全局ID校验来保证幂等操作

 

把幂等校验操作封装成一个注解来处理。

如何把幂等操作封装成一个注解来使用?“请勿重复请求”

true表示第一次提交,false重复提交;

 

1、定义注解

2、在某个方法上使用注解;

3、SpringBoot之HandlerInterceptor拦截器;

 

1、定义实现类

定义一个Interceptor 非常简单方式也有几种,我这里简单列举两种

1)类要实现Spring 的HandlerInterceptor 接口

2)类继承实现了HandlerInterceptor 接口的类,例如 已经提供的实现了HandlerInterceptor 接口的抽象类HandlerInterceptorAdapter;

 

1、preHandle:在业务处理器处理请求之前被调用。预处理,可以进行编码、安全控制、权限校验等处理;

2、postHandle:在业务处理器处理请求执行完成后,生成视图之前执行。后处理(调用了Service并返回ModelAndView,但未进行页面渲染),有机会修改ModelAndView (这个博主就基本不怎么用了);

3、afterCompletion:在DispatcherServlet完全处理完请求后被调用,可用于清理资源等。返回处理(已经渲染了页面);

 

拦截器实现

新建WebAppConfigurer 实现WebMvcConfigurer接口;

其实以前都是继承WebMvcConfigurerAdapter类 不过springBoot2.0以上 WebMvcConfigurerAdapter 方法过时,有两种替代方案:

1、继承WebMvcConfigurationSupport

2、实现WebMvcConfigurer

但是继承WebMvcConfigurationSupport会让Spring-boot对mvc的自动配置失效。根据项目情况选择。现在大多数项目是前后端分离,并没有对静态资源有自动配置的需求所以继承WebMvcConfigurationSupport也未尝不可。

 

对请求添加拦截器,拦截规则是所有请求。可以打印出所有的请求信息。

registry.addInterceptor(new TestFilter()).addPathPatterns("/**");

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值