UPDATE 12-ago-2025
This commit is contained in:
@@ -1,6 +1,12 @@
|
||||
/*
|
||||
* Copyright 2025 Google. This software is provided as-is, without warranty or representation for any use or purpose.
|
||||
* Your use of it is subject to your agreement with Google.
|
||||
*/
|
||||
|
||||
package com.example.config;
|
||||
|
||||
import com.example.dto.dialogflow.ConversationSessionDTO;
|
||||
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;
|
||||
@@ -12,32 +18,60 @@ 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) {
|
||||
ReactiveRedisConnectionFactory factory) {
|
||||
|
||||
ObjectMapper objectMapper = new ObjectMapper();
|
||||
objectMapper.registerModule(new JavaTimeModule());
|
||||
objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
|
||||
objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
|
||||
|
||||
Jackson2JsonRedisSerializer<ConversationSessionDTO> serializer =
|
||||
new Jackson2JsonRedisSerializer<>(objectMapper, ConversationSessionDTO.class);
|
||||
Jackson2JsonRedisSerializer<ConversationSessionDTO> serializer = new Jackson2JsonRedisSerializer<>(
|
||||
objectMapper, ConversationSessionDTO.class);
|
||||
|
||||
return new ReactiveRedisTemplate<>(factory, RedisSerializationContext
|
||||
.<String, ConversationSessionDTO>newSerializationContext(new StringRedisSerializer())
|
||||
.value(serializer)
|
||||
.build());
|
||||
.<String, ConversationSessionDTO>newSerializationContext(new StringRedisSerializer())
|
||||
.value(serializer)
|
||||
.build());
|
||||
}
|
||||
|
||||
@Bean
|
||||
public ReactiveRedisTemplate<String, String> reactiveStringRedisTemplate(
|
||||
ReactiveRedisConnectionFactory factory) {
|
||||
ReactiveRedisConnectionFactory factory) {
|
||||
return new ReactiveRedisTemplate<>(factory, RedisSerializationContext
|
||||
.<String, String>newSerializationContext(new StringRedisSerializer())
|
||||
.value(new StringRedisSerializer())
|
||||
.build());
|
||||
}
|
||||
.<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();
|
||||
return new ReactiveRedisTemplate<>(factory, context);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user