Skip to content

v1.9.0

Choose a tag to compare

@BigGG-Guardian BigGG-Guardian released this 05 Mar 01:58
· 5 commits to master since this release

v1.9.0

🎉 新增功能

SpEL 动态 Key 生成

防重复提交和接口限流模块现在支持通过 SpEL 表达式动态生成 Key,满足更灵活的限流/防重场景:

// 仅请求体参数
@RepeatSubmit(interval = 10, spEl = "#orderId")
@RateLimit(qps = 5, spEl = "#orderId")

// 仅请求参数
@RepeatSubmit(interval = 10, spEl = "#orderId")
@RateLimit(qps = 5, spEl = "#keyword")

// params + body 混合使用
@RepeatSubmit(interval = 10, spEl = "#userId + ':' + #body.orderId")
@RateLimit(qps = 5, spEl = "#userId + ':' + #body.productId")

YAML 配置同样支持:

guardian:
  repeat-submit:
    urls:
      - pattern: /api/order/**
        interval: 10
        sp-el: "#orderId"
  
  rate-limit:
    urls:
      - pattern: /api/product/**
        qps: 5
        sp-el: "#productId"

SpEL 变量说明

变量 说明
#参数名 从请求参数或请求体中获取
#body.参数名 显式从请求体中获取(用于区分同名的params参数)

🛠️ 内部优化

  • 新增 SpElUtils 工具类
  • 实现 PropertyAccessor 接口,支持 SpEL 用 . 方式访问 Map

升级提示:本次更新完全向后兼容,升级无需修改任何业务代码。