diff --git a/udf-starter-cache-redis/src/main/java/org/itkk/udf/cache/redis/CacheRedisConfig.java b/udf-starter-cache-redis/src/main/java/org/itkk/udf/cache/redis/CacheRedisConfig.java index 16350f3..e7da918 100644 --- a/udf-starter-cache-redis/src/main/java/org/itkk/udf/cache/redis/CacheRedisConfig.java +++ b/udf-starter-cache-redis/src/main/java/org/itkk/udf/cache/redis/CacheRedisConfig.java @@ -1,5 +1,8 @@ package org.itkk.udf.cache.redis; +import com.fasterxml.jackson.annotation.JsonAutoDetect; +import com.fasterxml.jackson.annotation.PropertyAccessor; +import com.fasterxml.jackson.databind.ObjectMapper; import org.itkk.udf.core.ApplicationConfig; import org.springframework.cache.CacheManager; import org.springframework.cache.annotation.EnableCaching; @@ -8,7 +11,7 @@ import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.cache.RedisCacheManager; import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.core.RedisTemplate; -import org.springframework.data.redis.serializer.JdkSerializationRedisSerializer; +import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer; import org.springframework.data.redis.serializer.StringRedisSerializer; /** @@ -52,8 +55,15 @@ public class CacheRedisConfig { public RedisTemplate redisTemplate(RedisConnectionFactory factory) { RedisTemplate redisTemplate = new RedisTemplate<>(); redisTemplate.setConnectionFactory(factory); + // 使用Jackson2JsonRedisSerialize 替换默认序列化 + Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class); + ObjectMapper objectMapper = new ObjectMapper(); + objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); + objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); + jackson2JsonRedisSerializer.setObjectMapper(objectMapper); + // 设置value的序列化规则和 key的序列化规则 + redisTemplate.setValueSerializer(jackson2JsonRedisSerializer); redisTemplate.setKeySerializer(new StringRedisSerializer()); - redisTemplate.setValueSerializer(new JdkSerializationRedisSerializer()); redisTemplate.afterPropertiesSet(); return redisTemplate; }