|  | @@ -8,8 +8,10 @@ import org.springframework.data.redis.connection.RedisConnectionFactory;
 | 
	
		
			
				|  |  |  import org.springframework.data.redis.core.RedisTemplate;
 | 
	
		
			
				|  |  |  import org.springframework.data.redis.serializer.StringRedisSerializer;
 | 
	
		
			
				|  |  |  import com.fasterxml.jackson.annotation.JsonAutoDetect;
 | 
	
		
			
				|  |  | +import com.fasterxml.jackson.annotation.JsonTypeInfo;
 | 
	
		
			
				|  |  |  import com.fasterxml.jackson.annotation.PropertyAccessor;
 | 
	
		
			
				|  |  |  import com.fasterxml.jackson.databind.ObjectMapper;
 | 
	
		
			
				|  |  | +import com.fasterxml.jackson.databind.jsontype.impl.LaissezFaireSubTypeValidator;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  /**
 | 
	
		
			
				|  |  |   * redis配置
 | 
	
	
		
			
				|  | @@ -21,7 +23,7 @@ import com.fasterxml.jackson.databind.ObjectMapper;
 | 
	
		
			
				|  |  |  public class RedisConfig extends CachingConfigurerSupport
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  |      @Bean
 | 
	
		
			
				|  |  | -    @SuppressWarnings(value = { "unchecked", "rawtypes", "deprecation" })
 | 
	
		
			
				|  |  | +    @SuppressWarnings(value = { "unchecked", "rawtypes" })
 | 
	
		
			
				|  |  |      public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory connectionFactory)
 | 
	
		
			
				|  |  |      {
 | 
	
		
			
				|  |  |          RedisTemplate<Object, Object> template = new RedisTemplate<>();
 | 
	
	
		
			
				|  | @@ -31,12 +33,17 @@ public class RedisConfig extends CachingConfigurerSupport
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          ObjectMapper mapper = new ObjectMapper();
 | 
	
		
			
				|  |  |          mapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
 | 
	
		
			
				|  |  | -        mapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
 | 
	
		
			
				|  |  | +        mapper.activateDefaultTyping(LaissezFaireSubTypeValidator.instance, ObjectMapper.DefaultTyping.NON_FINAL, JsonTypeInfo.As.PROPERTY);
 | 
	
		
			
				|  |  |          serializer.setObjectMapper(mapper);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        template.setValueSerializer(serializer);
 | 
	
		
			
				|  |  |          // 使用StringRedisSerializer来序列化和反序列化redis的key值
 | 
	
		
			
				|  |  |          template.setKeySerializer(new StringRedisSerializer());
 | 
	
		
			
				|  |  | +        template.setValueSerializer(serializer);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        // Hash的key也采用StringRedisSerializer的序列化方式
 | 
	
		
			
				|  |  | +        template.setHashKeySerializer(new StringRedisSerializer());
 | 
	
		
			
				|  |  | +        template.setHashValueSerializer(serializer);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          template.afterPropertiesSet();
 | 
	
		
			
				|  |  |          return template;
 | 
	
		
			
				|  |  |      }
 |