1717
1818package org .minbox .framework .api .boot .autoconfigure .ratelimiter ;
1919
20+ import org .minbox .framework .api .boot .plugin .rate .limiter .ApiBootRateLimiter ;
2021import org .minbox .framework .api .boot .plugin .rate .limiter .ApiBootRateLimiterConfiguration ;
2122import org .minbox .framework .api .boot .plugin .rate .limiter .config .RateLimiterConfig ;
2223import org .minbox .framework .api .boot .plugin .rate .limiter .handler .ApiBootDefaultRateLimiterInterceptorHandler ;
24+ import org .minbox .framework .api .boot .plugin .rate .limiter .support .GoogleGuavaRateLimiter ;
2325import org .springframework .boot .autoconfigure .AutoConfigureAfter ;
2426import org .springframework .boot .autoconfigure .condition .ConditionalOnClass ;
2527import org .springframework .boot .autoconfigure .condition .ConditionalOnMissingBean ;
28+ import org .springframework .boot .autoconfigure .condition .ConditionalOnMissingClass ;
2629import org .springframework .boot .autoconfigure .web .servlet .WebMvcAutoConfiguration ;
2730import org .springframework .boot .context .properties .EnableConfigurationProperties ;
2831import org .springframework .context .annotation .Bean ;
2932import org .springframework .context .annotation .Configuration ;
33+ import org .springframework .context .annotation .Import ;
3034
3135/**
3236 * ApiBoot RateLimiter Auto Configuration
4347@ ConditionalOnClass (ApiBootRateLimiterConfiguration .class )
4448@ EnableConfigurationProperties (ApiBootRateLimiterProperties .class )
4549@ AutoConfigureAfter (WebMvcAutoConfiguration .class )
50+ @ Import (ApiBootRateLimiterRedisAutoConfiguration .class )
4651public class ApiBootRateLimiterAutoConfiguration {
4752 /**
4853 * ApiBoot Rate Limiter Properties
@@ -60,8 +65,20 @@ public ApiBootRateLimiterAutoConfiguration(ApiBootRateLimiterProperties apiBootR
6065 */
6166 @ Bean
6267 @ ConditionalOnMissingBean
63- public ApiBootDefaultRateLimiterInterceptorHandler apiBootDefaultRateLimiterInterceptorHandler () {
64- return new ApiBootDefaultRateLimiterInterceptorHandler ();
68+ public ApiBootDefaultRateLimiterInterceptorHandler apiBootDefaultRateLimiterInterceptorHandler (ApiBootRateLimiter apiBootRateLimiter ) {
69+ return new ApiBootDefaultRateLimiterInterceptorHandler (apiBootRateLimiter );
70+ }
71+
72+ /**
73+ * google guava rate limiter
74+ *
75+ * @return ApiBootRateLimiter
76+ */
77+ @ Bean
78+ @ ConditionalOnMissingBean
79+ @ ConditionalOnMissingClass ("org.springframework.data.redis.core.RedisTemplate" )
80+ public ApiBootRateLimiter googleGuavaRateLimiter () {
81+ return new GoogleGuavaRateLimiter ();
6582 }
6683
6784 /**
@@ -71,11 +88,11 @@ public ApiBootDefaultRateLimiterInterceptorHandler apiBootDefaultRateLimiterInte
7188 */
7289 @ Bean
7390 @ ConditionalOnMissingBean
74- public ApiBootRateLimiterConfiguration apiBootRateLimiterConfiguration () {
91+ public ApiBootRateLimiterConfiguration apiBootRateLimiterConfiguration (ApiBootDefaultRateLimiterInterceptorHandler apiBootDefaultRateLimiterInterceptorHandler ) {
7592 // rate limiter config
7693 RateLimiterConfig rateLimiterConfig = new RateLimiterConfig ();
7794 rateLimiterConfig .setInterceptorUrl (apiBootRateLimiterProperties .getInterceptorUrl ());
7895
79- return new ApiBootRateLimiterConfiguration (rateLimiterConfig , apiBootDefaultRateLimiterInterceptorHandler () );
96+ return new ApiBootRateLimiterConfiguration (rateLimiterConfig , apiBootDefaultRateLimiterInterceptorHandler );
8097 }
8198}
0 commit comments