SpringBoot通过一个注解结合Redis实现接口限流就是这么简单( 二 )

<= 0) {response.setContentType("application/json;charset=utf-8") ;Map res = Map.ofEntries(Map.entry("code", -1),Map.entry("message", "访问太快了")) ;response.getWriter().println(new ObjectMapper().writeValueAsString(res)) ;return false ;} else {this.stringRedisTemplate.opsForValue().decrement(key) ;return true ;}}}}}return true ;}}

  • 配置拦截器
 @Componentpublic class AccessLimitConfig implements WebMvcConfigurer {@Resourceprivate AccessLimitInterceptor accessLimitInterceptor ;@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(accessLimitInterceptor).addPathPatterns("/**")// 对登录和退出接口放行.excludePathPatterns("/login", "/logout") ;}}以上就是核心类 , 整体还是非常简单的 , 主要判断都在拦截器中 。接下来进行接口测试
@RestController@RequestMapping("/acc")public class AccessLimitController {@AccessLimit(seconds = 1, count = 2)@GetMapping("/index")public Object index() {return "success" ;}}
  • 测试

SpringBoot通过一个注解结合Redis实现接口限流就是这么简单

文章插图
正常访问
SpringBoot通过一个注解结合Redis实现接口限流就是这么简单

文章插图
如果1秒内超过2次将输出上面错误
 

【SpringBoot通过一个注解结合Redis实现接口限流就是这么简单】


推荐阅读