1
+ package com .systemdesign .slidingwindowcounter .common .config ;
2
+
3
+ import com .fasterxml .jackson .annotation .JsonInclude ;
4
+ import com .fasterxml .jackson .annotation .JsonTypeInfo ;
5
+ import com .fasterxml .jackson .databind .ObjectMapper ;
6
+ import org .springframework .context .annotation .Bean ;
7
+ import org .springframework .context .annotation .Configuration ;
8
+ import org .springframework .data .redis .connection .ReactiveRedisConnectionFactory ;
9
+ import org .springframework .data .redis .core .ReactiveRedisTemplate ;
10
+ import org .springframework .data .redis .serializer .GenericJackson2JsonRedisSerializer ;
11
+ import org .springframework .data .redis .serializer .RedisSerializationContext ;
12
+ import org .springframework .data .redis .serializer .RedisSerializer ;
13
+
14
+ @ Configuration
15
+ public class RedisConfig {
16
+
17
+ @ Bean
18
+ public ReactiveRedisTemplate <String , Object > reactiveRedisTemplate (ReactiveRedisConnectionFactory connectionFactory ) {
19
+ ObjectMapper objectMapper = new ObjectMapper ();
20
+ objectMapper .setSerializationInclusion (JsonInclude .Include .NON_NULL );
21
+ objectMapper .activateDefaultTyping (objectMapper .getPolymorphicTypeValidator (), ObjectMapper .DefaultTyping .EVERYTHING , JsonTypeInfo .As .PROPERTY );
22
+
23
+ RedisSerializer <Object > redisSerializer = new GenericJackson2JsonRedisSerializer (objectMapper );
24
+
25
+ RedisSerializationContext <String , Object > context = RedisSerializationContext
26
+ .<String , Object >newSerializationContext (RedisSerializer .string ())
27
+ .value (redisSerializer )
28
+ .hashValue (redisSerializer )
29
+ .build ();
30
+
31
+ return new ReactiveRedisTemplate <>(connectionFactory , context );
32
+ }
33
+ }
0 commit comments