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,14 @@ 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" )
7780 @ ConditionalOnClass (ReactiveRedisTemplate .class )
7881 public RedisRouteDefinitionRepository redisRouteDefinitionRepository (
79- ReactiveRedisTemplate <String , RouteDefinition > reactiveRedisTemplate ) {
80- return new RedisRouteDefinitionRepository (reactiveRedisTemplate );
82+ ReactiveRedisTemplate <String , RouteDefinition > reactiveRedisTemplate ,
83+ RedisRouteDefinitionRepositoryProperties properties ) {
84+ return new RedisRouteDefinitionRepository (reactiveRedisTemplate ,
85+ properties .getRedisKeyPrefix ());
8186 }
8287
8388 @ Bean
@@ -87,8 +92,9 @@ public ReactiveRedisTemplate<String, RouteDefinition> reactiveRedisRouteDefiniti
8792 Jackson2JsonRedisSerializer <RouteDefinition > valueSerializer = new Jackson2JsonRedisSerializer <>(
8893 RouteDefinition .class );
8994 RedisSerializationContext .RedisSerializationContextBuilder <String , RouteDefinition > builder = RedisSerializationContext
90- .newSerializationContext (keySerializer );
91- RedisSerializationContext <String , RouteDefinition > context = builder .value (valueSerializer ).build ();
95+ .newSerializationContext (keySerializer );
96+ RedisSerializationContext <String , RouteDefinition > context = builder
97+ .value (valueSerializer ).build ();
9298
9399 return new ReactiveRedisTemplate <>(factory , context );
94100 }
0 commit comments