我尝试在springboot中使用rediscachemanager的cutom序列化,而不是使用默认的java序列化。在这里如何处理错误?如果出现序列化/反序列化错误,我想从redis中删除密钥或至少添加一个日志行。请找到我使用jackson实现的自定义序列化
@Bean
RedisCacheManager redisCacheManager(RedisConnectionFactory factory) {
StringRedisSerializer stringSerializer = new StringRedisSerializer();
ObjectMapper mapper = new ObjectMapper();
PolymorphicTypeValidator ptv = BasicPolymorphicTypeValidator.builder()
.allowIfSubType("com.example")
.allowIfSubType("java.sql.Timestamp")
.allowIfSubType("org.hibernate.collection")
.allowIfSubType("java.util.List")
.allowIfSubType("java.util.ArrayList")
.build();
mapper.activateDefaultTyping(ptv, ObjectMapper.DefaultTyping.NON_FINAL, JsonTypeInfo.As.PROPERTY);
RedisSerializer jacksonSerializer = new GenericJackson2JsonRedisSerializer(mapper);
return new RedisCacheManager(
RedisCacheWriter.nonLockingRedisCacheWriter(factory),
RedisCacheConfiguration.defaultCacheConfig()
.serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(stringSerializer))
.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(jacksonSerializer))
);
}
1条答案
按热度按时间unguejic1#
分享对我有用的解决方案
customcachemanagererrorhandler
缓存配置