25
25
import org .springframework .boot .autoconfigure .condition .ConditionalOnClass ;
26
26
import org .springframework .boot .autoconfigure .condition .ConditionalOnMissingBean ;
27
27
import org .springframework .boot .autoconfigure .condition .ConditionalOnProperty ;
28
+ import org .springframework .boot .context .properties .EnableConfigurationProperties ;
28
29
import org .springframework .boot .data .redis .autoconfigure .RedisReactiveAutoConfiguration ;
29
30
import org .springframework .cloud .gateway .filter .ratelimit .RedisRateLimiter ;
30
31
import org .springframework .cloud .gateway .route .RedisRouteDefinitionRepository ;
50
51
@ AutoConfigureBefore (GatewayAutoConfiguration .class )
51
52
@ ConditionalOnBean (ReactiveRedisTemplate .class )
52
53
@ 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 )
54
57
class GatewayRedisAutoConfiguration {
55
58
56
59
@ Bean
57
60
@ SuppressWarnings ("unchecked" )
58
61
public RedisScript redisRequestRateLimiterScript () {
59
62
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" )));
62
65
redisScript .setResultType (List .class );
63
66
return redisScript ;
64
67
}
@@ -72,12 +75,15 @@ public RedisRateLimiter redisRateLimiter(ReactiveStringRedisTemplate redisTempla
72
75
}
73
76
74
77
@ 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
77
81
@ ConditionalOnClass (ReactiveRedisTemplate .class )
78
82
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 ());
81
87
}
82
88
83
89
@ Bean
@@ -87,8 +93,9 @@ public ReactiveRedisTemplate<String, RouteDefinition> reactiveRedisRouteDefiniti
87
93
Jackson2JsonRedisSerializer <RouteDefinition > valueSerializer = new Jackson2JsonRedisSerializer <>(
88
94
RouteDefinition .class );
89
95
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 ();
92
99
93
100
return new ReactiveRedisTemplate <>(factory , context );
94
101
}
0 commit comments