diff --git a/continew-starter-core/src/main/java/top/continew/starter/core/constant/PropertiesConstants.java b/continew-starter-core/src/main/java/top/continew/starter/core/constant/PropertiesConstants.java index c99f5e1e..246e89d5 100644 --- a/continew-starter-core/src/main/java/top/continew/starter/core/constant/PropertiesConstants.java +++ b/continew-starter-core/src/main/java/top/continew/starter/core/constant/PropertiesConstants.java @@ -49,11 +49,6 @@ public class PropertiesConstants { */ public static final String SECURITY_CRYPTO = SECURITY + StringConstants.DOT + "crypto"; - /** - * 限流器配置 - */ - public static final String SECURITY_LIMITER = SECURITY + StringConstants.DOT + "limiter"; - /** * 敏感词配置 */ @@ -139,10 +134,15 @@ public class PropertiesConstants { */ public static final String TENANT = CONTINEW_STARTER + StringConstants.DOT + "tenant"; + /** + * 限流配置 + */ + public static final String RATE_LIMITER = CONTINEW_STARTER + StringConstants.DOT + "rate-limiter"; + /** * 幂等配置 */ - public static final String IDEMPOTENT = "idempotent"; + public static final String IDEMPOTENT = CONTINEW_STARTER + StringConstants.DOT + "idempotent"; private PropertiesConstants() { } diff --git a/continew-starter-dependencies/pom.xml b/continew-starter-dependencies/pom.xml index 7709e862..4459af92 100644 --- a/continew-starter-dependencies/pom.xml +++ b/continew-starter-dependencies/pom.xml @@ -538,6 +538,20 @@ ${revision} + + + top.continew + continew-starter-idempotent + ${revision} + + + + + top.continew + continew-starter-ratelimiter + ${revision} + + top.continew @@ -566,6 +580,13 @@ ${revision} + + + top.continew + continew-starter-security-sensitivewords + ${revision} + + top.continew @@ -587,20 +608,6 @@ ${revision} - - - top.continew - continew-starter-security-limiter - ${revision} - - - - - top.continew - continew-starter-security-sensitivewords - ${revision} - - top.continew diff --git a/continew-starter-idempotent/src/main/java/top/continew/starter/idempotent/autoconfigure/IdempotentAutoConfiguration.java b/continew-starter-idempotent/src/main/java/top/continew/starter/idempotent/autoconfigure/IdempotentAutoConfiguration.java index 401541f2..34abb9c1 100644 --- a/continew-starter-idempotent/src/main/java/top/continew/starter/idempotent/autoconfigure/IdempotentAutoConfiguration.java +++ b/continew-starter-idempotent/src/main/java/top/continew/starter/idempotent/autoconfigure/IdempotentAutoConfiguration.java @@ -26,6 +26,7 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.core.ResolvableType; +import top.continew.starter.cache.redisson.autoconfigure.RedissonAutoConfiguration; import top.continew.starter.core.constant.PropertiesConstants; import top.continew.starter.idempotent.aop.IdempotentAspect; import top.continew.starter.idempotent.generator.IdempotentNameGenerator; @@ -37,7 +38,7 @@ import top.continew.starter.idempotent.generator.IdempotentNameGenerator; * @author Charles7c * @since 2.10.0 */ -@AutoConfiguration +@AutoConfiguration(after = RedissonAutoConfiguration.class) @EnableConfigurationProperties(IdempotentProperties.class) @ConditionalOnProperty(prefix = PropertiesConstants.IDEMPOTENT, name = PropertiesConstants.ENABLED, havingValue = "true", matchIfMissing = true) public class IdempotentAutoConfiguration { diff --git a/continew-starter-idempotent/src/main/resources/spel-extension.json b/continew-starter-idempotent/src/main/resources/spel-extension.json new file mode 100644 index 00000000..8733c035 --- /dev/null +++ b/continew-starter-idempotent/src/main/resources/spel-extension.json @@ -0,0 +1,7 @@ +{ + "top.continew.starter.idempotent.annotation.Idempotent@key":{ + "method":{ + "parameters": true + } + } +} \ No newline at end of file diff --git a/continew-starter-security/continew-starter-security-limiter/pom.xml b/continew-starter-ratelimiter/pom.xml similarity index 68% rename from continew-starter-security/continew-starter-security-limiter/pom.xml rename to continew-starter-ratelimiter/pom.xml index 173f2028..308aa438 100644 --- a/continew-starter-security/continew-starter-security-limiter/pom.xml +++ b/continew-starter-ratelimiter/pom.xml @@ -3,19 +3,14 @@ 4.0.0 top.continew - continew-starter-security + continew-starter ${revision} - continew-starter-security-limiter - ContiNew Starter 安全模块 - 限流 + continew-starter-ratelimiter + ContiNew Starter 限流模块 - - org.springframework.boot - spring-boot-starter-aop - - top.continew diff --git a/continew-starter-security/continew-starter-security-limiter/src/main/java/top/continew/starter/security/limiter/annotation/RateLimiter.java b/continew-starter-ratelimiter/src/main/java/top/continew/starter/ratelimiter/annotation/RateLimiter.java similarity index 92% rename from continew-starter-security/continew-starter-security-limiter/src/main/java/top/continew/starter/security/limiter/annotation/RateLimiter.java rename to continew-starter-ratelimiter/src/main/java/top/continew/starter/ratelimiter/annotation/RateLimiter.java index 9cfd9bab..4a262bc0 100644 --- a/continew-starter-security/continew-starter-security-limiter/src/main/java/top/continew/starter/security/limiter/annotation/RateLimiter.java +++ b/continew-starter-ratelimiter/src/main/java/top/continew/starter/ratelimiter/annotation/RateLimiter.java @@ -14,9 +14,9 @@ * limitations under the License. */ -package top.continew.starter.security.limiter.annotation; +package top.continew.starter.ratelimiter.annotation; -import top.continew.starter.security.limiter.enums.LimitType; +import top.continew.starter.ratelimiter.enums.LimitType; import java.lang.annotation.*; import java.util.concurrent.TimeUnit; diff --git a/continew-starter-security/continew-starter-security-limiter/src/main/java/top/continew/starter/security/limiter/annotation/RateLimiters.java b/continew-starter-ratelimiter/src/main/java/top/continew/starter/ratelimiter/annotation/RateLimiters.java similarity index 93% rename from continew-starter-security/continew-starter-security-limiter/src/main/java/top/continew/starter/security/limiter/annotation/RateLimiters.java rename to continew-starter-ratelimiter/src/main/java/top/continew/starter/ratelimiter/annotation/RateLimiters.java index 73089046..9e19a746 100644 --- a/continew-starter-security/continew-starter-security-limiter/src/main/java/top/continew/starter/security/limiter/annotation/RateLimiters.java +++ b/continew-starter-ratelimiter/src/main/java/top/continew/starter/ratelimiter/annotation/RateLimiters.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package top.continew.starter.security.limiter.annotation; +package top.continew.starter.ratelimiter.annotation; import java.lang.annotation.*; diff --git a/continew-starter-security/continew-starter-security-limiter/src/main/java/top/continew/starter/security/limiter/core/RateLimiterAspect.java b/continew-starter-ratelimiter/src/main/java/top/continew/starter/ratelimiter/aop/RateLimiterAspect.java similarity index 89% rename from continew-starter-security/continew-starter-security-limiter/src/main/java/top/continew/starter/security/limiter/core/RateLimiterAspect.java rename to continew-starter-ratelimiter/src/main/java/top/continew/starter/ratelimiter/aop/RateLimiterAspect.java index 8642d1e9..b41918df 100644 --- a/continew-starter-security/continew-starter-security-limiter/src/main/java/top/continew/starter/security/limiter/core/RateLimiterAspect.java +++ b/continew-starter-ratelimiter/src/main/java/top/continew/starter/ratelimiter/aop/RateLimiterAspect.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package top.continew.starter.security.limiter.core; +package top.continew.starter.ratelimiter.aop; import cn.hutool.core.convert.Convert; import cn.hutool.core.text.CharSequenceUtil; @@ -27,15 +27,15 @@ import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Pointcut; import org.aspectj.lang.reflect.MethodSignature; import org.redisson.api.*; -import org.springframework.stereotype.Component; import top.continew.starter.cache.redisson.util.RedisUtils; import top.continew.starter.core.constant.StringConstants; import top.continew.starter.core.util.expression.ExpressionUtils; -import top.continew.starter.security.limiter.annotation.RateLimiter; -import top.continew.starter.security.limiter.annotation.RateLimiters; -import top.continew.starter.security.limiter.autoconfigure.RateLimiterProperties; -import top.continew.starter.security.limiter.enums.LimitType; -import top.continew.starter.security.limiter.exception.RateLimiterException; +import top.continew.starter.ratelimiter.annotation.RateLimiter; +import top.continew.starter.ratelimiter.annotation.RateLimiters; +import top.continew.starter.ratelimiter.autoconfigure.RateLimiterProperties; +import top.continew.starter.ratelimiter.generator.RateLimiterNameGenerator; +import top.continew.starter.ratelimiter.enums.LimitType; +import top.continew.starter.ratelimiter.exception.RateLimiterException; import top.continew.starter.web.util.SpringWebUtils; import java.lang.reflect.Method; @@ -51,7 +51,6 @@ import java.util.concurrent.ConcurrentHashMap; * @since 2.2.0 */ @Aspect -@Component public class RateLimiterAspect { private static final ConcurrentHashMap RATE_LIMITER_CACHE = new ConcurrentHashMap<>(); @@ -70,14 +69,14 @@ public class RateLimiterAspect { /** * 单个限流注解切点 */ - @Pointcut("@annotation(top.continew.starter.security.limiter.annotation.RateLimiter)") + @Pointcut("@annotation(top.continew.starter.ratelimiter.annotation.RateLimiter)") public void rateLimiterPointCut() { } /** * 多个限流注解切点 */ - @Pointcut("@annotation(top.continew.starter.security.limiter.annotation.RateLimiters)") + @Pointcut("@annotation(top.continew.starter.ratelimiter.annotation.RateLimiters)") public void rateLimitersPointCut() { } @@ -144,23 +143,23 @@ public class RateLimiterAspect { } /** - * 获取限流缓存 Key + * 获取缓存 Key * * @param joinPoint 切点 * @param rateLimiter 限流注解 - * @return 限流缓存 Key + * @return 缓存 Key */ private String getCacheKey(JoinPoint joinPoint, RateLimiter rateLimiter) { Object target = joinPoint.getTarget(); MethodSignature methodSignature = (MethodSignature)joinPoint.getSignature(); Method method = methodSignature.getMethod(); Object[] args = joinPoint.getArgs(); - // 获取限流名称 + // 获取名称 String name = rateLimiter.name(); if (CharSequenceUtil.isBlank(name)) { name = nameGenerator.generate(target, method, args); } - // 解析限流 Key + // 解析 Key String key = rateLimiter.key(); if (CharSequenceUtil.isNotBlank(key)) { Object eval = ExpressionUtils.eval(key, target, method, args); diff --git a/continew-starter-security/continew-starter-security-limiter/src/main/java/top/continew/starter/security/limiter/autoconfigure/RateLimiterAutoConfiguration.java b/continew-starter-ratelimiter/src/main/java/top/continew/starter/ratelimiter/autoconfigure/RateLimiterAutoConfiguration.java similarity index 61% rename from continew-starter-security/continew-starter-security-limiter/src/main/java/top/continew/starter/security/limiter/autoconfigure/RateLimiterAutoConfiguration.java rename to continew-starter-ratelimiter/src/main/java/top/continew/starter/ratelimiter/autoconfigure/RateLimiterAutoConfiguration.java index 62cac119..7d4876e6 100644 --- a/continew-starter-security/continew-starter-security-limiter/src/main/java/top/continew/starter/security/limiter/autoconfigure/RateLimiterAutoConfiguration.java +++ b/continew-starter-ratelimiter/src/main/java/top/continew/starter/ratelimiter/autoconfigure/RateLimiterAutoConfiguration.java @@ -14,9 +14,10 @@ * limitations under the License. */ -package top.continew.starter.security.limiter.autoconfigure; +package top.continew.starter.ratelimiter.autoconfigure; import jakarta.annotation.PostConstruct; +import org.redisson.api.RedissonClient; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.boot.autoconfigure.AutoConfiguration; @@ -24,10 +25,11 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.ComponentScan; +import top.continew.starter.cache.redisson.autoconfigure.RedissonAutoConfiguration; import top.continew.starter.core.constant.PropertiesConstants; -import top.continew.starter.security.limiter.core.DefaultRateLimiterNameGenerator; -import top.continew.starter.security.limiter.core.RateLimiterNameGenerator; +import top.continew.starter.ratelimiter.aop.RateLimiterAspect; +import top.continew.starter.ratelimiter.generator.DefaultRateLimiterNameGenerator; +import top.continew.starter.ratelimiter.generator.RateLimiterNameGenerator; /** * 限流器自动配置 @@ -36,14 +38,23 @@ import top.continew.starter.security.limiter.core.RateLimiterNameGenerator; * @author Charles7c * @since 2.2.0 */ -@AutoConfiguration +@AutoConfiguration(after = RedissonAutoConfiguration.class) @EnableConfigurationProperties(RateLimiterProperties.class) -@ComponentScan({"top.continew.starter.security.limiter.core"}) -@ConditionalOnProperty(prefix = PropertiesConstants.SECURITY_LIMITER, name = PropertiesConstants.ENABLED, havingValue = "true", matchIfMissing = true) +@ConditionalOnProperty(prefix = PropertiesConstants.RATE_LIMITER, name = PropertiesConstants.ENABLED, havingValue = "true", matchIfMissing = true) public class RateLimiterAutoConfiguration { private static final Logger log = LoggerFactory.getLogger(RateLimiterAutoConfiguration.class); + /** + * 限流器切面 + */ + @Bean + public RateLimiterAspect rateLimiterAspect(RateLimiterProperties properties, + RateLimiterNameGenerator rateLimiterNameGenerator, + RedissonClient redissonClient) { + return new RateLimiterAspect(properties, rateLimiterNameGenerator, redissonClient); + } + /** * 限流器名称生成器 */ @@ -55,6 +66,6 @@ public class RateLimiterAutoConfiguration { @PostConstruct public void postConstruct() { - log.debug("[ContiNew Starter] - Auto Configuration 'Security-RateLimiter' completed initialization."); + log.debug("[ContiNew Starter] - Auto Configuration 'RateLimiter' completed initialization."); } } diff --git a/continew-starter-security/continew-starter-security-limiter/src/main/java/top/continew/starter/security/limiter/autoconfigure/RateLimiterProperties.java b/continew-starter-ratelimiter/src/main/java/top/continew/starter/ratelimiter/autoconfigure/RateLimiterProperties.java similarity index 90% rename from continew-starter-security/continew-starter-security-limiter/src/main/java/top/continew/starter/security/limiter/autoconfigure/RateLimiterProperties.java rename to continew-starter-ratelimiter/src/main/java/top/continew/starter/ratelimiter/autoconfigure/RateLimiterProperties.java index d423ba57..c0673b8b 100644 --- a/continew-starter-security/continew-starter-security-limiter/src/main/java/top/continew/starter/security/limiter/autoconfigure/RateLimiterProperties.java +++ b/continew-starter-ratelimiter/src/main/java/top/continew/starter/ratelimiter/autoconfigure/RateLimiterProperties.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package top.continew.starter.security.limiter.autoconfigure; +package top.continew.starter.ratelimiter.autoconfigure; import org.springframework.boot.context.properties.ConfigurationProperties; import top.continew.starter.core.constant.PropertiesConstants; @@ -25,7 +25,7 @@ import top.continew.starter.core.constant.PropertiesConstants; * @author KAI * @since 2.2.0 */ -@ConfigurationProperties(PropertiesConstants.SECURITY_LIMITER) +@ConfigurationProperties(PropertiesConstants.RATE_LIMITER) public class RateLimiterProperties { /** diff --git a/continew-starter-security/continew-starter-security-limiter/src/main/java/top/continew/starter/security/limiter/enums/LimitType.java b/continew-starter-ratelimiter/src/main/java/top/continew/starter/ratelimiter/enums/LimitType.java similarity index 94% rename from continew-starter-security/continew-starter-security-limiter/src/main/java/top/continew/starter/security/limiter/enums/LimitType.java rename to continew-starter-ratelimiter/src/main/java/top/continew/starter/ratelimiter/enums/LimitType.java index d1221b46..06d4b729 100644 --- a/continew-starter-security/continew-starter-security-limiter/src/main/java/top/continew/starter/security/limiter/enums/LimitType.java +++ b/continew-starter-ratelimiter/src/main/java/top/continew/starter/ratelimiter/enums/LimitType.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package top.continew.starter.security.limiter.enums; +package top.continew.starter.ratelimiter.enums; /** * 限流类型 diff --git a/continew-starter-security/continew-starter-security-limiter/src/main/java/top/continew/starter/security/limiter/exception/RateLimiterException.java b/continew-starter-ratelimiter/src/main/java/top/continew/starter/ratelimiter/exception/RateLimiterException.java similarity index 94% rename from continew-starter-security/continew-starter-security-limiter/src/main/java/top/continew/starter/security/limiter/exception/RateLimiterException.java rename to continew-starter-ratelimiter/src/main/java/top/continew/starter/ratelimiter/exception/RateLimiterException.java index 0b63459c..9881f954 100644 --- a/continew-starter-security/continew-starter-security-limiter/src/main/java/top/continew/starter/security/limiter/exception/RateLimiterException.java +++ b/continew-starter-ratelimiter/src/main/java/top/continew/starter/ratelimiter/exception/RateLimiterException.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package top.continew.starter.security.limiter.exception; +package top.continew.starter.ratelimiter.exception; import top.continew.starter.core.exception.BaseException; diff --git a/continew-starter-security/continew-starter-security-limiter/src/main/java/top/continew/starter/security/limiter/core/DefaultRateLimiterNameGenerator.java b/continew-starter-ratelimiter/src/main/java/top/continew/starter/ratelimiter/generator/DefaultRateLimiterNameGenerator.java similarity index 98% rename from continew-starter-security/continew-starter-security-limiter/src/main/java/top/continew/starter/security/limiter/core/DefaultRateLimiterNameGenerator.java rename to continew-starter-ratelimiter/src/main/java/top/continew/starter/ratelimiter/generator/DefaultRateLimiterNameGenerator.java index 3ff7005f..3e81c240 100644 --- a/continew-starter-security/continew-starter-security-limiter/src/main/java/top/continew/starter/security/limiter/core/DefaultRateLimiterNameGenerator.java +++ b/continew-starter-ratelimiter/src/main/java/top/continew/starter/ratelimiter/generator/DefaultRateLimiterNameGenerator.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package top.continew.starter.security.limiter.core; +package top.continew.starter.ratelimiter.generator; import cn.hutool.core.util.ClassUtil; import top.continew.starter.core.constant.StringConstants; diff --git a/continew-starter-security/continew-starter-security-limiter/src/main/java/top/continew/starter/security/limiter/core/RateLimiterNameGenerator.java b/continew-starter-ratelimiter/src/main/java/top/continew/starter/ratelimiter/generator/RateLimiterNameGenerator.java similarity index 95% rename from continew-starter-security/continew-starter-security-limiter/src/main/java/top/continew/starter/security/limiter/core/RateLimiterNameGenerator.java rename to continew-starter-ratelimiter/src/main/java/top/continew/starter/ratelimiter/generator/RateLimiterNameGenerator.java index 78ddd6aa..9d93c0db 100644 --- a/continew-starter-security/continew-starter-security-limiter/src/main/java/top/continew/starter/security/limiter/core/RateLimiterNameGenerator.java +++ b/continew-starter-ratelimiter/src/main/java/top/continew/starter/ratelimiter/generator/RateLimiterNameGenerator.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package top.continew.starter.security.limiter.core; +package top.continew.starter.ratelimiter.generator; import java.lang.reflect.Method; diff --git a/continew-starter-ratelimiter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/continew-starter-ratelimiter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 00000000..f2d677d0 --- /dev/null +++ b/continew-starter-ratelimiter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1 @@ +top.continew.starter.ratelimiter.autoconfigure.RateLimiterAutoConfiguration \ No newline at end of file diff --git a/continew-starter-ratelimiter/src/main/resources/spel-extension.json b/continew-starter-ratelimiter/src/main/resources/spel-extension.json new file mode 100644 index 00000000..7ab7aeaf --- /dev/null +++ b/continew-starter-ratelimiter/src/main/resources/spel-extension.json @@ -0,0 +1,7 @@ +{ + "top.continew.starter.ratelimiter.annotation.RateLimiter@key":{ + "method":{ + "parameters": true + } + } +} \ No newline at end of file diff --git a/continew-starter-security/continew-starter-security-limiter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/continew-starter-security/continew-starter-security-limiter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports deleted file mode 100644 index d365e008..00000000 --- a/continew-starter-security/continew-starter-security-limiter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ /dev/null @@ -1 +0,0 @@ -top.continew.starter.security.limiter.autoconfigure.RateLimiterAutoConfiguration \ No newline at end of file diff --git a/continew-starter-security/continew-starter-security-limiter/src/main/resources/spel-extension.json b/continew-starter-security/continew-starter-security-limiter/src/main/resources/spel-extension.json deleted file mode 100644 index 9088db73..00000000 --- a/continew-starter-security/continew-starter-security-limiter/src/main/resources/spel-extension.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "top.continew.starter.security.limiter.annotation.RateLimiter@key":{ - "method":{ - "parameters": true - } - } -} \ No newline at end of file diff --git a/continew-starter-security/pom.xml b/continew-starter-security/pom.xml index 66be5684..5030a14e 100644 --- a/continew-starter-security/pom.xml +++ b/continew-starter-security/pom.xml @@ -17,7 +17,6 @@ continew-starter-security-password continew-starter-security-mask continew-starter-security-crypto - continew-starter-security-limiter continew-starter-security-sensitivewords diff --git a/pom.xml b/pom.xml index bac5220c..2c74a528 100644 --- a/pom.xml +++ b/pom.xml @@ -71,8 +71,9 @@ continew-starter-data continew-starter-auth continew-starter-messaging - continew-starter-extension + continew-starter-ratelimiter continew-starter-idempotent + continew-starter-extension