v1.9.0
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
升级提示:本次更新完全向后兼容,升级无需修改任何业务代码。