From 291d473cc35bce0c3864d9b985cd009281cc4314 Mon Sep 17 00:00:00 2001
From: "Ray.Hao" <1490493387@qq.com>
Date: Fri, 17 Jul 2026 00:19:12 +0800
Subject: [PATCH] =?UTF-8?q?refactor(rate-limit):=20=E5=AE=8C=E5=96=84?=
=?UTF-8?q?=E5=8F=8C=E5=B1=82=E6=BB=91=E5=8A=A8=E7=AA=97=E5=8F=A3=E9=99=90?=
=?UTF-8?q?=E6=B5=81=E5=AE=9E=E7=8E=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../boot/common/annotation/RateLimit.java | 19 +++-----------
.../boot/framework/cache/RedisConfig.java | 21 +++------------
.../framework/web/aspect/RateLimitAspect.java | 8 +++---
.../web/config/RateLimitProperties.java | 14 +++++-----
.../web/filter/IpRateLimitFilter.java | 4 +--
.../system/controller/HealthController.java | 26 +++++++++++++++++++
6 files changed, 46 insertions(+), 46 deletions(-)
create mode 100644 src/main/java/com/youlai/boot/system/controller/HealthController.java
diff --git a/src/main/java/com/youlai/boot/common/annotation/RateLimit.java b/src/main/java/com/youlai/boot/common/annotation/RateLimit.java
index 7039965e..e7e73424 100644
--- a/src/main/java/com/youlai/boot/common/annotation/RateLimit.java
+++ b/src/main/java/com/youlai/boot/common/annotation/RateLimit.java
@@ -1,11 +1,10 @@
package com.youlai.boot.common.annotation;
import java.lang.annotation.*;
-import java.util.concurrent.TimeUnit;
/**
* 接口限流
- *
标注在 Controller 方法上,基于 Redis 计数窗口实现
+ * 标注在 Controller 方法上,基于 Redis 滑动窗口实现
*
* @author Ray.Hao
* @since 4.3.1
@@ -23,21 +22,9 @@ public @interface RateLimit {
int limit() default 0;
/**
- * 滑动窗口大小。
+ * 滑动窗口大小(秒)。
*
- * 单位由 {@link #timeUnit()} 决定;{@code <=0} 时使用全局默认值。
+ * {@code <=0} 时使用全局默认值 {@code rate-limit.default-window}。
*/
int window() default 0;
-
- /**
- * 窗口单位,默认秒。
- */
- TimeUnit timeUnit() default TimeUnit.SECONDS;
-
- /**
- * 限流 Key 的分组标签,用于区分不同接口。
- *
- * 默认 {@code api}。
- */
- String prefix() default "api";
}
diff --git a/src/main/java/com/youlai/boot/framework/cache/RedisConfig.java b/src/main/java/com/youlai/boot/framework/cache/RedisConfig.java
index 610380d9..8014f69f 100644
--- a/src/main/java/com/youlai/boot/framework/cache/RedisConfig.java
+++ b/src/main/java/com/youlai/boot/framework/cache/RedisConfig.java
@@ -24,12 +24,10 @@ public class RedisConfig {
* 修改 Redis 序列化方式,默认 JdkSerializationRedisSerializer
*
* @param redisConnectionFactory {@link RedisConnectionFactory}
- * @param jsonMapper Jackson 序列化器(统一使用不写入类型信息的配置)
* @return {@link RedisTemplate}
*/
@Bean
- public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory,
- JsonMapper jsonMapper) {
+ public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory) {
RedisTemplate redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(redisConnectionFactory);
@@ -38,7 +36,9 @@ public class RedisConfig {
redisTemplate.setKeySerializer(RedisSerializer.string());
redisTemplate.setHashKeySerializer(RedisSerializer.string());
- // Value 使用自定义 JSON 序列化(不写入类型信息,避免 HashSet 等集合被序列化成带 @class 的结构)
+ JsonMapper jsonMapper = JsonMapper.builder()
+ .disable(DateTimeFeature.WRITE_DATES_AS_TIMESTAMPS)
+ .build();
JacksonJsonRedisSerializer