RedisConfig.java 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. package com.coffee.common.redis;
  2. import com.alibaba.fastjson.support.spring.FastJsonRedisSerializer;
  3. import com.fasterxml.jackson.annotation.JsonAutoDetect;
  4. import com.fasterxml.jackson.annotation.JsonTypeInfo;
  5. import com.fasterxml.jackson.annotation.PropertyAccessor;
  6. import com.fasterxml.jackson.databind.ObjectMapper;
  7. import com.fasterxml.jackson.databind.jsontype.impl.LaissezFaireSubTypeValidator;
  8. import lombok.AllArgsConstructor;
  9. import lombok.extern.slf4j.Slf4j;
  10. import org.springframework.cache.annotation.CachingConfigurerSupport;
  11. import org.springframework.cache.annotation.EnableCaching;
  12. import org.springframework.context.annotation.Bean;
  13. import org.springframework.context.annotation.Configuration;
  14. import org.springframework.data.redis.connection.RedisConnectionFactory;
  15. import org.springframework.data.redis.core.RedisTemplate;
  16. import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
  17. import org.springframework.data.redis.serializer.StringRedisSerializer;
  18. /**
  19. * redis基础配置
  20. *
  21. * @author Kevin
  22. */
  23. @Configuration
  24. @EnableCaching
  25. @Slf4j
  26. @AllArgsConstructor
  27. public class RedisConfig extends CachingConfigurerSupport {
  28. private final ObjectMapper objectMapper;
  29. @Bean
  30. public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory connectionFactory) {
  31. RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
  32. // 使用Jackson2JsonRedisSerialize 替换默认序列化
  33. Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
  34. // ObjectMapper objectMapper = new ObjectMapper();
  35. // objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
  36. // objectMapper.activateDefaultTyping(LaissezFaireSubTypeValidator.instance, ObjectMapper.DefaultTyping.NON_FINAL, JsonTypeInfo.As.WRAPPER_ARRAY);
  37. jackson2JsonRedisSerializer.setObjectMapper(objectMapper);
  38. // 设置value的序列化规则和 key的序列化规则
  39. redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
  40. redisTemplate.setKeySerializer(new StringRedisSerializer());
  41. redisTemplate.setHashKeySerializer(jackson2JsonRedisSerializer);
  42. redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);
  43. redisTemplate.setDefaultSerializer(jackson2JsonRedisSerializer);
  44. redisTemplate.setEnableDefaultSerializer(true);
  45. redisTemplate.setConnectionFactory(connectionFactory);
  46. return redisTemplate;
  47. }
  48. }