/**
* @Author Hanson * @Date 2020/4/6 14:02 * @Version 2.0 */ @Configuration //开启注解缓存 @EnableCaching public class RedisConfig { @SuppressWarnings("AliDeprecation") @Bean public RedisTemplate<String,Object> redisTemplate(RedisConnectionFactory factory){ //创建redisTemplate模板 RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>(); //配置连接工厂 redisTemplate.setConnectionFactory(factory); //使用Jackson2JsonRedisSerializer来序列化和反序列化Redis的value值(默认使用JDK的序列化方式) Jackson2JsonRedisSerializer jsonRedisSerializer = new Jackson2JsonRedisSerializer<>(Object.class); ObjectMapper objectMapper = new ObjectMapper(); //指定要序列化的域,field,get和set,以及修饰符范围,ANY表示都有包括private和public objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); //指定序列化输入的类型,类必须是非final修饰的,final修饰的类,比如String,Integer等会抛出异常 objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); jsonRedisSerializer.setObjectMapper(objectMapper); //设置value的序列化规则和key的序列化规则 redisTemplate.setValueSerializer(jsonRedisSerializer); redisTemplate.setHashValueSerializer(jsonRedisSerializer); //使用StringRedisSerializer来序列化和反序列化Redis的key值 redisTemplate.setKeySerializer(new StringRedisSerializer()); //设置hash key和value序列化模式 redisTemplate.setHashKeySerializer(redisTemplate.getKeySerializer()); redisTemplate.afterPropertiesSet(); //返回redisTemplate对象 return redisTemplate; } }