package com.lesingle.common.annotation; import java.lang.annotation.*; import java.util.concurrent.TimeUnit; /** * 接口速率限制注解 * 用于公开接口防止恶意调用 */ @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface RateLimit { /** * 时间窗口内允许的最大请求次数 */ int permits() default 10; /** * 时间窗口大小 */ long duration() default 1; /** * 时间单位 */ TimeUnit timeUnit() default TimeUnit.SECONDS; /** * 限制维度:ip / user */ String key() default "ip"; }