package com.qianwen.core.redis.config; import java.util.List; import com.qianwen.core.redis.ratelimiter.RedisRateLimiterAspect; import com.qianwen.core.redis.ratelimiter.RedisRateLimiterClient; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.env.Environment; import org.springframework.core.io.ClassPathResource; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.data.redis.core.script.DefaultRedisScript; import org.springframework.data.redis.core.script.RedisScript; import org.springframework.scripting.support.ResourceScriptSource; @Configuration(proxyBeanMethods = false) @ConditionalOnProperty(value = {"blade.redis.rate-limiter.enabled"}, havingValue = "true") /* loaded from: blade-starter-redis-9.3.0.0-SNAPSHOT.jar:org/springblade/core/redis/config/RateLimiterAutoConfiguration.class */ public class RateLimiterAutoConfiguration { private RedisScript> redisRateLimiterScript() { DefaultRedisScript redisScript = new DefaultRedisScript(); redisScript.setScriptSource(new ResourceScriptSource(new ClassPathResource("META-INF/scripts/blade_rate_limiter.lua"))); redisScript.setResultType(List.class); return redisScript; } @ConditionalOnMissingBean @Bean public RedisRateLimiterClient redisRateLimiter(StringRedisTemplate redisTemplate, Environment environment) { RedisScript> redisRateLimiterScript = redisRateLimiterScript(); return new RedisRateLimiterClient(redisTemplate, redisRateLimiterScript, environment); } @ConditionalOnMissingBean @Bean public RedisRateLimiterAspect redisRateLimiterAspect(RedisRateLimiterClient rateLimiterClient) { return new RedisRateLimiterAspect(rateLimiterClient); } }