UPDATE 24-Oct
This commit is contained in:
@@ -5,11 +5,10 @@
|
||||
|
||||
package com.example.config;
|
||||
|
||||
import com.example.dto.dialogflow.conversation.ConversationMessageDTO;
|
||||
import com.example.dto.dialogflow.conversation.ConversationSessionDTO;
|
||||
import com.example.dto.dialogflow.notification.NotificationSessionDTO;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.fasterxml.jackson.databind.SerializationFeature;
|
||||
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.data.redis.connection.ReactiveRedisConnectionFactory;
|
||||
@@ -18,60 +17,35 @@ import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
|
||||
import org.springframework.data.redis.serializer.RedisSerializationContext;
|
||||
import org.springframework.data.redis.serializer.StringRedisSerializer;
|
||||
|
||||
/**
|
||||
* Spring configuration class for setting up Reactive Redis(Memorystore in GCP)
|
||||
* templates.
|
||||
* It defines and customizes `ReactiveRedisTemplate` beans for different data
|
||||
* types
|
||||
* like `ConversationSessionDTO` and `NotificationDTO`, using Jackson for JSON
|
||||
* serialization and ensuring proper handling of Java 8 and higher date/time
|
||||
* objects.
|
||||
*/
|
||||
@Configuration
|
||||
public class RedisConfig {
|
||||
|
||||
@Bean
|
||||
public ReactiveRedisTemplate<String, ConversationSessionDTO> reactiveConversationRedisTemplate(
|
||||
ReactiveRedisConnectionFactory factory) {
|
||||
|
||||
ObjectMapper objectMapper = new ObjectMapper();
|
||||
objectMapper.registerModule(new JavaTimeModule());
|
||||
objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
|
||||
|
||||
Jackson2JsonRedisSerializer<ConversationSessionDTO> serializer = new Jackson2JsonRedisSerializer<>(
|
||||
objectMapper, ConversationSessionDTO.class);
|
||||
|
||||
return new ReactiveRedisTemplate<>(factory, RedisSerializationContext
|
||||
.<String, ConversationSessionDTO>newSerializationContext(new StringRedisSerializer())
|
||||
.value(serializer)
|
||||
.build());
|
||||
}
|
||||
|
||||
@Bean
|
||||
public ReactiveRedisTemplate<String, String> reactiveStringRedisTemplate(
|
||||
ReactiveRedisConnectionFactory factory) {
|
||||
return new ReactiveRedisTemplate<>(factory, RedisSerializationContext
|
||||
.<String, String>newSerializationContext(new StringRedisSerializer())
|
||||
.value(new StringRedisSerializer())
|
||||
.build());
|
||||
}
|
||||
|
||||
@Bean
|
||||
public ReactiveRedisTemplate<String, NotificationSessionDTO> reactiveNotificationRedisTemplate(
|
||||
ReactiveRedisConnectionFactory factory) {
|
||||
ObjectMapper notificationObjectMapper = new ObjectMapper();
|
||||
notificationObjectMapper.registerModule(new JavaTimeModule());
|
||||
notificationObjectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
|
||||
|
||||
StringRedisSerializer keySerializer = new StringRedisSerializer();
|
||||
Jackson2JsonRedisSerializer<NotificationSessionDTO> valueSerializer = new Jackson2JsonRedisSerializer<>(
|
||||
notificationObjectMapper, NotificationSessionDTO.class);
|
||||
|
||||
RedisSerializationContext.RedisSerializationContextBuilder<String, NotificationSessionDTO> builder = RedisSerializationContext
|
||||
.newSerializationContext(keySerializer);
|
||||
|
||||
RedisSerializationContext<String, NotificationSessionDTO> context = builder.value(valueSerializer)
|
||||
.build();
|
||||
@Bean
|
||||
public ReactiveRedisTemplate<String, ConversationSessionDTO> reactiveRedisTemplate(ReactiveRedisConnectionFactory factory, ObjectMapper objectMapper) {
|
||||
Jackson2JsonRedisSerializer<ConversationSessionDTO> serializer = new Jackson2JsonRedisSerializer<>(objectMapper, ConversationSessionDTO.class);
|
||||
RedisSerializationContext.RedisSerializationContextBuilder<String, ConversationSessionDTO> builder = RedisSerializationContext.newSerializationContext(new StringRedisSerializer());
|
||||
RedisSerializationContext<String, ConversationSessionDTO> context = builder.value(serializer).build();
|
||||
return new ReactiveRedisTemplate<>(factory, context);
|
||||
}
|
||||
}
|
||||
|
||||
@Bean
|
||||
public ReactiveRedisTemplate<String, NotificationSessionDTO> reactiveNotificationRedisTemplate(ReactiveRedisConnectionFactory factory, ObjectMapper objectMapper) {
|
||||
Jackson2JsonRedisSerializer<NotificationSessionDTO> serializer = new Jackson2JsonRedisSerializer<>(objectMapper, NotificationSessionDTO.class);
|
||||
RedisSerializationContext.RedisSerializationContextBuilder<String, NotificationSessionDTO> builder = RedisSerializationContext.newSerializationContext(new StringRedisSerializer());
|
||||
RedisSerializationContext<String, NotificationSessionDTO> context = builder.value(serializer).build();
|
||||
return new ReactiveRedisTemplate<>(factory, context);
|
||||
}
|
||||
|
||||
@Bean
|
||||
public ReactiveRedisTemplate<String, ConversationMessageDTO> reactiveMessageRedisTemplate(ReactiveRedisConnectionFactory factory, ObjectMapper objectMapper) {
|
||||
Jackson2JsonRedisSerializer<ConversationMessageDTO> serializer = new Jackson2JsonRedisSerializer<>(objectMapper, ConversationMessageDTO.class);
|
||||
RedisSerializationContext.RedisSerializationContextBuilder<String, ConversationMessageDTO> builder = RedisSerializationContext.newSerializationContext(new StringRedisSerializer());
|
||||
RedisSerializationContext<String, ConversationMessageDTO> context = builder.value(serializer).build();
|
||||
return new ReactiveRedisTemplate<>(factory, context);
|
||||
}
|
||||
|
||||
@Bean
|
||||
public ReactiveRedisTemplate<String, String> reactiveStringRedisTemplate(ReactiveRedisConnectionFactory factory) {
|
||||
return new ReactiveRedisTemplate<>(factory, RedisSerializationContext.string());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user