首页 > 快讯 > 系统 >

🌟SpringMVC自定义注解+拦截器:轻松限制控制器访问次数🙌

发布时间:2025-03-24 20:56:52来源:

在开发Web应用时,我们常常需要对某些接口设置访问频率限制,以防止恶意请求或过载问题。今天就来聊聊如何用SpringMVC结合自定义注解与拦截器实现这一功能!💻✨

首先,创建一个自定义注解`@AccessLimit`,用于标记需要限制访问次数的方法。例如:

```java

@Retention(RetentionPolicy.RUNTIME)

@Target(ElementType.METHOD)

public @interface AccessLimit {

int seconds(); // 限制时间间隔(秒)

int maxCount(); // 最大允许访问次数

}

```

接着,在拦截器中解析该注解并统计请求次数。如果超出限制,则返回错误提示。Interceptor逻辑如下:

```java

@Override

public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {

if (handler instanceof HandlerMethod) {

HandlerMethod method = (HandlerMethod) handler;

AccessLimit accessLimit = method.getMethodAnnotation(AccessLimit.class);

if (accessLimit != null) {

// 根据用户IP和方法名生成唯一key

String key = request.getRequestURI();

Integer count = redisService.get(key);

if (count == null) count = 1;

else if (count > accessLimit.maxCount()) {

throw new RuntimeException("访问过于频繁,请稍后再试!");

} else {

redisService.set(key, count + 1, accessLimit.seconds());

}

}

}

return true;

}

```

通过这种方式,我们不仅实现了灵活的访问控制,还提升了系统的健壮性。快去试试吧!🚀💨

免责声明:本答案或内容为用户上传,不代表本网观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。 如遇侵权请及时联系本站删除。