最近遇上个需求,有个接口需要根据请求的id来限制访问间隔不得小于10秒,记录一下解决方案。
首先自定义一个注解
/**
* @author mxm
* @Date: 2020/08/18
* @Description: 接口注解类
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface AccessLimit {
}
再定义一个拦截器
/**
* @author :mxm
* @date :Created in 2021/8/17 14:16
* @description:接口访问限制
* @modified By:
* @version: 1.1$
*/
@Component
//由于HandlerInterceptorAdapter已经过期,需要实现HandlerInterceptor接口
public class FangshuaInterceptor implements HandlerInterceptor{
@Autowired
private RedisTemplate redisTemplate;
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
//判断请求是否属于方法的请求
if(handler instanceof HandlerMethod){
HandlerMethod handlerMethod=(HandlerMethod)