RepeatSubmit.java 1.18 KB
package com.diligrp.cashier.shared.annotation;


import com.diligrp.cashier.shared.handler.duplication.DuplicationSubmit;
import com.diligrp.cashier.shared.handler.duplication.IgnoreDuplicationSubmit;

import java.lang.annotation.*;
import java.util.concurrent.TimeUnit;

/**
 * @author dengwei
 * @version 1.0.0
 * @ClassName RepeatSubmit.java
 * @Description RepeatSubmit
 */
@Inherited
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface RepeatSubmit {
    /**
     * 前缀
     */
    String prefix() default "";

    /**
     * 用于存放SpEL表达式的数组
     */
    String[] value() default {};

    /**
     * 是否值保留一个值
     */
    boolean onlyOne() default false;

    /**
     * 等待获取锁的最大时长
     * 未设置的-快速失败
     * 设置-等待指定时间
     */
    int waitTime() default 0;

    /**
     * 获取锁之后,锁的自动释放时间
     */
    int leaseTime() default 0;

    /**
     * 时间单位
     */
    TimeUnit timeUnit() default TimeUnit.SECONDS;

    /**
     * 重复提交
     */
    Class<? extends DuplicationSubmit> duplicationSubmit() default IgnoreDuplicationSubmit.class;
}