小工具知识网

当前位置: 首页 > 行业知识 > spring boot 自定义注解封装(@RequestLimit注解)

行业知识

spring boot 自定义注解封装(@RequestLimit注解)

2026-11-01 07:11:57 来源:互联网转载

index.php/tags-41973.html" >���述:

()

@RequestLimit(time=3)防重复点击,限制单个会话的请求频率。但是

@RequestLimit注解中的参数不能传常量。

()

例如:不能通过获取application.yml文件中的配置信息,去动态配置限制时间,所以就对@RequestLimit注解封装。

  1. 在application.yml配置文件中添加防止重复点击限制时长。
# 后端防重复点击时间requestLimitTime: 3 # 时间限制值  3秒
  1. 自定义注解
import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import java.lang.annotation.Target;/** 1. 定义注解名称为:RequestLimit  */@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.METHOD)public @interface RequestLimit {     /**     * 限制时间(秒),默认值为1秒     */    long time() default 1;}
  1. 注解切面业务逻辑自行添加
import com.dsy.cloud.bdss.platform.entity.RequestLimitMap;import com.dsy.cloud.bdss.platform.exception.BusiException;import org.aspectj.lang.ProceedingJoinPoint;import org.aspectj.lang.annotation.Around;import org.aspectj.lang.annotation.Aspect;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Value;import org.springframework.stereotype.Component;@Aspect@Componentpublic class RequestLimitAspect  {    @Value("${requestLimitTime:}")    private long limitTime; // 从application.yml配置文件中获取时间限制值,单位秒     // 对带有@RequestLimit注解的方法进行处理(备注:@annotation中注解名要和自定义的注解名对应)。    @Around("@annotation(RequestLimit)")    public Object limitRequestExecutionTime(ProceedingJoinPoint joinPoint) throws Throwable {        // 自行添加相关的业务逻辑...        // 执行切点方法        return joinPoint.proceed();    }}
  1. 在controller层使用注解
    @PutMapping("/test")    @RequestLimit    public void test() throws Exception {       // .....    }

上一篇:揭秘CSS隐藏图片的神秘面纱,轻松展示代码揭秘技巧!

下一篇:超人应用获取宝典,一键下载,轻松成为超人!