一篇文章令你茅塞顿开,注解还能这么用,AOP与自定义注解实现接口防刷案例

前言

自定义注解实现接口防刷案例,这个案例主要实现是通过AOP和自定义注解实现。在实际的开发中很多时候一些复杂重复的操作我们,我们都可以使用注解+AOP的方式进行实现。今天我们主要讲接口防刷,其他的之后在进行实现。

准备工作

首先在做这个案例之前,希望大家对自定义注解有一定的了解。同时也要对Aop有一定的认知。
自定义注解不熟悉的可以看一下我之前发的一篇文章。
啊啊,终于搞明白了,原来注解是这么一回事。6000+字理解注解【一】

这里我是用到了Spring boot+Redis来进行实现的,其实也可以不适用Redis。大家可以自己发掘一下。

环境的搭建这里就不做过多的赘述了,都应该会建工程。

AOP

面向切面编程,一般都是对现有的代码做一些其他操作。比如追加日志了等功能都可以使用AOP进行实现。
在springBoot中使用AOP需要引入依赖

<dependency>
   <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-aop</artifactId>
    <version>2.5.7</version>
</dependency>

下面我们粗略说下AOP 的几个注解:

注解 作用
@Aspect(切面) 通常是一个类,里面可以定义切入点和通知
@JointPoint(连接点) 程序执行过程中明确的点,一般是方法的调用
@Advice(通知) AOP在特定的切入点上执行的增强处理,有@before,@after,@afterReturning,@afterThrowing,@around
@Pointcut(切入点) 就是带有通知的连接点,在程序中主要体现为书写切入点表达式

这里不过多赘述AOP的知识。如有机会单独来讲AOP。

编写自定义注解

这里我们创建一个注解类,命名为RequestLimit

/**
 * 自定义注解 限制访问
 */
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
@Documented
//最高优先级
@Order(1)
public @interface RequestLimit {
   
    /*
    * 允许访问的次数,默认值为max_value
    * */
    int count() default Integer.MAX_VALUE;

    /*
    * 以第一次请求往后退时间为准
    * 例如第一次请求是在12:00点,请求时间设置一分钟
    * 在12:01分的时间段内访问次数超过count会报错,但是到12:01之后会重新开始计数,而不是以后不可访问
    * 时间段,单位为毫秒,默认值为一分钟
    * 考虑到以上因素,如果知识为了避免攻击,建议把time设置大一点,例如一分钟20次
    * 如果想要避免重复提交问题,需要且只能把Count设置成1,同时time设置小一点 例如一秒一次
    *
    * */
    int time(
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gussu-毛虫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值