@Configuration
public class RedisConfig {
@Bean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
// 直接使用 <String,Object>,避免类型转换
RedisTemplate<String, Object> template = new RedisTemplate<>();
template.setConnectionFactory(redisConnectionFactory);
// ===== 序列化设置 =====
// --------------- Jackson 序列化 -----------------
Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>(Object.class);
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
// enableDefaultTyping方法过期
//objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
// 替换enableDefaultTyping方法
objectMapper.activateDefaultTyping(
LaissezFaireSubTypeValidator.instance ,
ObjectMapper.DefaultTyping.NON_FINAL,
JsonTypeInfo.As.WRAPPER_ARRAY);
// 设置对象映射
jackson2JsonRedisSerializer.setObjectMapper(objectMapper);
// --------------- String 序列化 -----------------
StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
// ===== RedisTemplate 序列化设置 =====
// key采用String的序列化方式
template.setKeySerializer(stringRedisSerializer);
// hashKey采用String的序列化方式
template.setHashKeySerializer(stringRedisSerializer);
// value采用Jackson的序列化方式
template.setValueSerializer(jackson2JsonRedisSerializer);
// HashValue采用Jackson的序列化方式
template.setHashValueSerializer(jackson2JsonRedisSerializer);
template.afterPropertiesSet();
return template;
}
}
Redis序列化配置
最新推荐文章于 2024-07-28 11:34:59 发布
该博客详细介绍了如何在Spring配置中设置RedisTemplate,特别是使用Jackson2JsonRedisSerializer进行对象序列化,包括设置ObjectMapper以允许任何属性可见性和启用默认类型识别,确保数据在Redis中的存储和读取效率。
摘要由CSDN通过智能技术生成