# lyscms-prevent-duplicate-submit **Repository Path**: saxion/lyscms-prevent-duplicate-submit ## Basic Information - **Project Name**: lyscms-prevent-duplicate-submit - **Description**: 基于SpringBoot2+实现的一个防止重复提交组件,支持多策略模式:ALL、POST、GET、NONE及兼容注解指定接口拦截或者不拦截,防止用户提交时重复点击导致重复数据。 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 8 - **Created**: 2024-06-18 - **Last Updated**: 2024-06-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # lyscms-prevent-duplicate-submit #### 介绍 基于SpringBoot2+实现的一个防止重复提交组件,支持多策略模式:ALL、POST、GET、NONE及兼容注解指定接口拦截或者不拦截,防止用户提交时重复点击导致重复数据。 #### 软件架构 1.基于SpringBoot2.0+上的组件 2.基于拦截器Interceptor实现 3.支持多种策略运行模式:ALL、POST、GET、NONE以及@Annotation自定义方式 4.内置本地内存锁加锁,支持自定义其它锁实现,实现LockHandler接口并交给Spring管理即可,如:分布式锁 5.内置默认拦截返回信息,支持自定义返回handler 6.内置默认幂等标识(请求唯一标识): sessionId, 支持自定义,实现IdempotentUniquenessHandler接口交给Spring管理即可 #### 安装教程 1. 在项目中增加maven依赖 ```xml info.lyscms.assembly lyscms-prevent-duplicate-submit 1.0.3 ``` 2. 在启动类上增加注解 @EnableLyscmsPreventRepeated(strategy = PreventStrategy.POST) 默认为POST,可设置:ALL、POST、GET、NONE #### 使用说明 1. 策略模式说明: a. ALL:所有类型的请求均会进行放重复拦截 b. POST:包括post、delete、put、patch c. GET:包括get、head、options d. NONE:不做任何放重复拦截 2. 自定义幂等标识(请求id)、自定义锁实现、自定义拦截响应与下类似(默认如下) ```java @Configuration public class PreventRepeatConfig { @Bean public IdempotentUniquenessHandler idempotentUniquenessHandler() { return new IdempotentUniquenessHandler() { /** * 幂等唯一id * * @param request 请求对象 * @param method 方法 * @return 唯一标识 * @author sunkl */ @Override public String idempotentId(HttpServletRequest request, HandlerMethod method) { return request.getSession().getId() + "_" + request.getMethod() + "_" + request.getRequestURI(); } }; } } ``` 3. 注意项目中不要存在其它继承WebMvcConfigurationSupport的配置,若有请修改为实现WebMvcConfigurer即可,否则拦截器可能不会生效 4. 指定接口拦截或者不拦截 - @ExcludePreventRepeat:标识不拦截 - @PreventRepeat:标识拦截 #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request #### 亮月特技 1. Power by [www.lyscms.info](https://www.lyscms.info) 2. 官方博客 [xzpdskll](https://blog.csdn.net/xzpdskll)