当前位置: 首页 > wzjs >正文

专做汽配的b2b网站有哪些东莞今日新闻大事

专做汽配的b2b网站有哪些,东莞今日新闻大事,购物网站 建设,福州市建设工程招投标信息网springBoot实现的一个限流注解 文章目录 目录 文章目录 一、使用步骤 1.引入库 2.代码实现 1.添加注解 2.新增限流AOP实现 3.实现代码的拦截 4.最终结果 总结 一、使用步骤 1.引入库 代码如下&#xff08;示例&#xff09;&#xff1a; <!-- 引入SpringBoot Aop依…

springBoot实现的一个限流注解

文章目录

目录

文章目录

一、使用步骤

1.引入库

2.代码实现

1.添加注解

2.新增限流AOP实现

 3.实现代码的拦截

 4.最终结果

总结

一、使用步骤

1.引入库

代码如下(示例):

        <!-- 引入SpringBoot Aop依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId></dependency>

2.代码实现

1.添加注解

package com.hhh.springai_test.annotation;import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface RedisLimiting {int number() default 3;int time() default 60;String message() default "请求过于频繁,请稍后再试";}

2.新增限流AOP实现

package com.hhh.springai_test.aop;import cn.hutool.crypto.digest.MD5;
import com.hhh.springai_test.annotation.RedisLimiting;
import com.hhh.springai_test.common.ErrorCode;
import com.hhh.springai_test.exception.BusinessException;
import com.hhh.springai_test.utils.RedisUtils;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.reflect.MethodSignature;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;import java.lang.reflect.Method;
import java.lang.reflect.Parameter;@Aspect
@Component("redisLimitingAspect")
@Slf4j
public class RedisLimitingAspect {@Autowiredprivate RedisUtils redisUtils;@Around("@annotation(com.hhh.springai_test.annotation.RedisLimiting)")  // 只拦截带 @redisLimiting 的方法public Object redisLimiting(ProceedingJoinPoint joinPoint) throws Throwable {MethodSignature signature = (MethodSignature) joinPoint.getSignature();Method method = signature.getMethod(); // 直接获取被代理的方法// 获取 @redisLimiting 注解RedisLimiting annotation = method.getAnnotation(RedisLimiting.class);if (annotation == null) {return joinPoint.proceed(); // 没有注解,直接执行方法}int limit = annotation.number(); // 限制次数int expire = annotation.time();  // 过期时间String message = annotation.message();log.info("拦截方法: {}, 限流 key: {}, 限流次数: {}, 过期时间: {} 秒",method.getName(), limit, expire);// 执行限流逻辑boolean isAllowed = checkRedisLimiting(method, joinPoint.getArgs(), limit, expire);if (!isAllowed) {throw new BusinessException(ErrorCode.BUSY_ERROR,message);}return joinPoint.proceed(); // 执行原方法}private boolean checkRedisLimiting(Method method, Object[] args, int limit, int expire) {// 生成 Redis KeyString redisKey = generateRedisKey(method, args);// 查询 Redis 是否存在Object o = redisUtils.get(redisKey);if (o == null) {redisUtils.setex(redisKey, 1, expire); // 初始值设为1,并设置过期时间return true;} else {int count = Integer.parseInt(o.toString());if (count >= limit) {return false; // 超过限制} else {redisUtils.increment(redisKey, 1); // 递增计数return true;}}}private String generateRedisKey(Method method, Object[] args) {StringBuilder builder = new StringBuilder();builder.append(method.getDeclaringClass().getName()).append(":").append(method.getName()).append(":");Parameter[] parameters = method.getParameters();for (int i = 0; i < parameters.length; i++) {builder.append(parameters[i].getName()).append("=").append(args[i]).append("&");}return MD5.create().digestHex16(builder.toString()); // 生成唯一 Redis Key}
}

 3.实现代码的拦截

@GetMapping("/getAllModel")@RedisLimiting(number = 3, time = 60,message = "不要再请求我的获取aiModel方法了")public BaseResponse<List<AiModelVO>> getAllModel() {return ResultUtils.success(aiModelService.getAllModel());}

 4.最终结果


总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

http://www.dtcms.com/wzjs/49711.html

相关文章:

  • php动态网站制作流程图百度官网网址
  • 广告文案策划长沙网站seo收费标准
  • 网站域名是网站架构吗排名优化哪家好
  • 凌源网站建设东莞网络营销网络推广系统
  • 微信公众小程序开发网络推广优化工具
  • 本地建站软件有哪些优化关键词怎么做
  • 潍坊网站建设盛鸿科技关键词排名怎么做上首页
  • 一个专门做澳洲直邮的网站吗长沙seo关键词排名优化
  • 聚成网络网站建设seo是什么简称
  • 中建西部建设广通讯网站易观数据
  • 广州网站制作技术seo外链工具软件
  • 如何建立自己的网拍平台seo权威入门教程
  • 上海做网站公上海百网优seo优化公司
  • 网站制作建设广东云浮疫情最新情况
  • 制作企业网站页面的实训报告百度竞价排名展示方式
  • 网站建设维护服务协议企业培训公司
  • 怎么做快递网站的分点广告关键词
  • 网站源码对应的数据库怎么做浙江网络推广公司
  • 苏州做网站推广的公司嘉兴关键词优化报价
  • 做自己的批发网站需要什么营业执照西安网站建设公司电话
  • wordpress权限百度小程序seo
  • 十六局门户网企业网站的搜索引擎推广与优化
  • 品牌vi设计的意义seo外链推广工具下载
  • 做机械的外贸网站站外推广方式
  • 淮安公司网站建设网页制作软件
  • 建设网站的网站有哪些南宁网站优化公司电话
  • 做绿化生意有什么网站2022年seo最新优化策略
  • 想美团这样的网站怎么做泰州百度seo
  • 网站建设售后协议网站营销推广
  • python官方网站什么是淘宝搜索关键词