Я использую Spring Boot с Redis Caching и Jackson2jsonredisserializer для сериализации. My Redisconfig настроен так: < /p>
@Configuration
@EnableCaching
public class RedisConfig {
@Bean
public ObjectMapper objectMapper() {
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.registerModule(new JavaTimeModule());
objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
return objectMapper;
}
@Bean
public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory, ObjectMapper objectMapper) {
RedisTemplate redisTemplate = new RedisTemplate();
redisTemplate.setConnectionFactory(redisConnectionFactory);
Jackson2JsonRedisSerializer serializer = new Jackson2JsonRedisSerializer(objectMapper, Object.class);
redisTemplate.setValueSerializer(serializer);
redisTemplate.setHashValueSerializer(serializer);
return redisTemplate;
}
@Bean
public CacheManager redisCacheManager(RedisConnectionFactory redisConnectionFactory, ObjectMapper objectMapper) {
Jackson2JsonRedisSerializer serializer = new Jackson2JsonRedisSerializer(objectMapper, Object.class);
RedisCacheConfiguration redisCacheConfiguration = RedisCacheConfiguration.defaultCacheConfig()
.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(serializer));
return RedisCacheManager.builder(redisConnectionFactory)
.cacheDefaults(redisCacheConfiguration)
.build();
}
}
< /code>
При кэшировании LocalDate, кажется, хранится как строка в Redis. Но когда я пытаюсь прочитать его обратно, я получаю эту ошибку: < /p>
class java.lang.String cannot be cast to class java.time.LocalDate
(java.lang.String and java.time.LocalDate are in module java.base of loader 'bootstrap')
< /code>
Что мне не хватает? Как я могу гарантировать, что LocalDate правильно опустошен при чтении из кеша?
Подробнее здесь: https://stackoverflow.com/questions/794 ... aldate-whe