当前位置:   article > 正文

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

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

描述:
@RequestLimit(time=3)防重复点击,限制单个会话的请求频率。但是
@RequestLimit注解中的参数不能传常量。
例如:不能通过获取application.yml文件中的配置信息,去动态配置限制时间,所以就对@RequestLimit注解封装。

  1. 在application.yml配置文件中添加防止重复点击限制时长。
# 后端防重复点击时间
requestLimitTime: 3 # 时间限制值  3秒
  • 1
  • 2
  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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  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
@Component
public 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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  1. 在controller层使用注解
    @PutMapping("/test")
    @RequestLimit
    public void test() throws Exception {
       // .....
    }
  • 1
  • 2
  • 3
  • 4
  • 5
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/160581
推荐阅读
相关标签
  

闽ICP备14008679号