@Documented
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface RepeatSubmit {
/**
* 防重提交,支持两种,一个是方法参数,一个是令牌
*/
enum Type {PARAM,TOKEN}
Type limitType() default Type.PARAM;
/**
* 加锁过期时间,默认是5秒
* @return
*/
long lockTime() default 5;}
这个Java代码段定义了一个名为RepeatSubmit
的自定义注解,它用于防止方法被重复提交。下面是对这段代码的逐字解释:
-
@Documented:
- 这个元注解表明
RepeatSubmit
注解是被文档化的,即它会被包含在JavaDoc中。
- 这个元注解表明
-
@Target(ElementType.METHOD):
- 这个元注解指定了
RepeatSubmit
注解可以应用于方法(ElementType.METHOD
)。
- 这个元注解指定了
-
@Retention(RetentionPolicy.RUNTIME):
- 这个元注解指定了
RepeatSubmit
注解的保留策略是运行时,即注解在运行时可见,可以通过反射获取。
- 这个元注解指定了
-
public @interface RepeatSubmit:
- 声明了一个名为
RepeatSubmit
的公共接口,它是一个注解类型。
- 声明了一个名为
-
枚举定义:
enum Type {PARAM, TOKEN}
- 在
RepeatSubmit
注解内部定义了一个名为Type
的枚举类型,它有两个值:PARAM
和TOKEN
。这表示注解支持两种防止重复提交的类型。
- 在
-
注解属性:
Type limitType() default Type.PARAM;
- 定义了一个名为
limitType
的属性,其类型为之前定义的Type
枚举。这个方法默认返回Type.PARAM
,表示默认情况下使用方法参数来防止重复提交。
- 定义了一个名为
-
文档注释:
/** * 防重提交,支持两种,一个是方法参数,一个是令牌 */
- 这是一个文档注释,用于说明
limitType
属性的作用。
- 这是一个文档注释,用于说明
-
另一个注解属性:
long lockTime() default 5;
- 定义了另一个名为
lockTime
的属性,其类型为long
。这个方法默认返回5,表示默认的加锁过期时间是5秒。
- 定义了另一个名为
-
文档注释:
/** * 加锁过期时间,默认是5秒 * @return */
- 这是另一个文档注释,用于说明
lockTime
属性的作用。
- 这是另一个文档注释,用于说明
使用示例:
下面是如何使用RepeatSubmit
注解的示例:
public class SomeService {
@RepeatSubmit(limitType = RepeatSubmit.Type.TOKEN, lockTime = 10)
public void someImportantMethod() {
// 方法实现
}
}
在这个示例中,someImportantMethod
方法被RepeatSubmit
注解标记,指定使用令牌(TOKEN
)来防止重复提交,并将加锁时间设置为10秒。
通过这种方式,RepeatSubmit
注解提供了一种灵活的方式来控制方法的重复提交行为,并通过默认值提供了方便的配置选项。