- jar包依赖
aspectj : "org.aspectj:aspectjweaver:1.9.6",
- 实现自定义注解
@Target({ElementType.TYPE,ElementType.METHOD,ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface RepeatRequest {
}
- 设置切面
@Aspect
@Component
public class RepeatAspect {
private static final Logger logger = LoggerFactory.getLogger(RepeatAspect.class);
@Resource
private RedisTemplate redisTemplate;
private static int beginCount = 1;
private static int maxCount = 3;
/**
* 切入点
* 使用@annotation会作用在类里面的方法
* 使用@within会作用在类里面的所有方法
*/
@Pointcut("@within(net.wownow.sofa.mabang.annotations.RepeatRequest)")
public void cut() {}
/**
* 自定义注解整合切面编程,实现对某个接口频繁请求限制
* 只需要在接口上加上注解@RepeatRequest即可
* 参考TokenController接口
* @param joinPoint
*/
@Before("cut()")
public void around(Join