/**
* @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; } }