2525import org .springframework .boot .autoconfigure .condition .ConditionalOnClass ;
2626import org .springframework .boot .autoconfigure .condition .ConditionalOnMissingBean ;
2727import org .springframework .boot .autoconfigure .condition .ConditionalOnProperty ;
28+ import org .springframework .boot .context .properties .EnableConfigurationProperties ;
2829import org .springframework .boot .data .redis .autoconfigure .RedisReactiveAutoConfiguration ;
2930import org .springframework .cloud .gateway .filter .ratelimit .RedisRateLimiter ;
3031import org .springframework .cloud .gateway .route .RedisRouteDefinitionRepository ;
5051@ AutoConfigureBefore (GatewayAutoConfiguration .class )
5152@ ConditionalOnBean (ReactiveRedisTemplate .class )
5253@ ConditionalOnClass ({ RedisTemplate .class , DispatcherHandler .class })
53- @ ConditionalOnProperty (name = GatewayProperties .PREFIX + ".redis.enabled" , matchIfMissing = true )
54+ @ ConditionalOnProperty (name = GatewayProperties .PREFIX
55+ + ".redis.enabled" , matchIfMissing = true )
56+ @ EnableConfigurationProperties (RedisRouteDefinitionRepositoryProperties .class )
5457class GatewayRedisAutoConfiguration {
5558
5659 @ Bean
5760 @ SuppressWarnings ("unchecked" )
5861 public RedisScript redisRequestRateLimiterScript () {
5962 DefaultRedisScript redisScript = new DefaultRedisScript <>();
60- redisScript .setScriptSource (
61- new ResourceScriptSource ( new ClassPathResource ("META-INF/scripts/request_rate_limiter.lua" )));
63+ redisScript .setScriptSource (new ResourceScriptSource (
64+ new ClassPathResource ("META-INF/scripts/request_rate_limiter.lua" )));
6265 redisScript .setResultType (List .class );
6366 return redisScript ;
6467 }
@@ -72,12 +75,15 @@ public RedisRateLimiter redisRateLimiter(ReactiveStringRedisTemplate redisTempla
7275 }
7376
7477 @ Bean
75- @ ConditionalOnProperty (value = GatewayProperties .PREFIX + ".redis-route-definition-repository.enabled" ,
76- havingValue = "true" )
78+ @ ConditionalOnProperty (value = GatewayProperties .PREFIX
79+ + ".redis-route-definition-repository.enabled" , havingValue = "true" )
80+ @ ConditionalOnMissingBean
7781 @ ConditionalOnClass (ReactiveRedisTemplate .class )
7882 public RedisRouteDefinitionRepository redisRouteDefinitionRepository (
79- ReactiveRedisTemplate <String , RouteDefinition > reactiveRedisTemplate ) {
80- return new RedisRouteDefinitionRepository (reactiveRedisTemplate );
83+ ReactiveRedisTemplate <String , RouteDefinition > reactiveRedisTemplate ,
84+ RedisRouteDefinitionRepositoryProperties properties ) {
85+ return new RedisRouteDefinitionRepository (reactiveRedisTemplate ,
86+ properties .getRedisKeyPrefix ());
8187 }
8288
8389 @ Bean
@@ -87,8 +93,9 @@ public ReactiveRedisTemplate<String, RouteDefinition> reactiveRedisRouteDefiniti
8793 Jackson2JsonRedisSerializer <RouteDefinition > valueSerializer = new Jackson2JsonRedisSerializer <>(
8894 RouteDefinition .class );
8995 RedisSerializationContext .RedisSerializationContextBuilder <String , RouteDefinition > builder = RedisSerializationContext
90- .newSerializationContext (keySerializer );
91- RedisSerializationContext <String , RouteDefinition > context = builder .value (valueSerializer ).build ();
96+ .newSerializationContext (keySerializer );
97+ RedisSerializationContext <String , RouteDefinition > context = builder
98+ .value (valueSerializer ).build ();
9299
93100 return new ReactiveRedisTemplate <>(factory , context );
94101 }
0 commit comments