RedisConfig.java 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. package com.usky.config.redis;
  2. import com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility;
  3. import com.fasterxml.jackson.annotation.PropertyAccessor;
  4. import com.fasterxml.jackson.databind.ObjectMapper;
  5. import com.fasterxml.jackson.databind.ObjectMapper.DefaultTyping;
  6. import lombok.extern.slf4j.Slf4j;
  7. import org.springframework.cache.annotation.CachingConfigurerSupport;
  8. import org.springframework.context.annotation.Bean;
  9. import org.springframework.context.annotation.Configuration;
  10. import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
  11. import org.springframework.data.redis.core.RedisTemplate;
  12. import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
  13. import org.springframework.data.redis.serializer.RedisSerializer;
  14. import org.springframework.data.redis.serializer.StringRedisSerializer;
  15. import javax.annotation.Resource;
  16. /**
  17. * 开启缓存支持
  18. *
  19. * @Return:
  20. */
  21. @Slf4j
  22. @Configuration
  23. public class RedisConfig extends CachingConfigurerSupport {
  24. @Resource
  25. private LettuceConnectionFactory lettuceConnectionFactory;
  26. /**
  27. * RedisTemplate配置
  28. *
  29. * @param lettuceConnectionFactory
  30. * @return
  31. */
  32. @Bean
  33. public RedisTemplate<String, Object> redisTemplate(LettuceConnectionFactory lettuceConnectionFactory) {
  34. log.info(" --- redis config init --- ");
  35. Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = jacksonSerializer();
  36. RedisTemplate<String, Object> redisTemplate = new RedisTemplate<String, Object>();
  37. redisTemplate.setConnectionFactory(lettuceConnectionFactory);
  38. RedisSerializer<?> stringSerializer = new StringRedisSerializer();
  39. // key序列化
  40. redisTemplate.setKeySerializer(stringSerializer);
  41. // value序列化
  42. redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
  43. // Hash key序列化
  44. redisTemplate.setHashKeySerializer(stringSerializer);
  45. // Hash value序列化
  46. redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);
  47. redisTemplate.afterPropertiesSet();
  48. return redisTemplate;
  49. }
  50. private Jackson2JsonRedisSerializer jacksonSerializer() {
  51. Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
  52. ObjectMapper objectMapper = new ObjectMapper();
  53. objectMapper.setVisibility(PropertyAccessor.ALL, Visibility.ANY);
  54. objectMapper.enableDefaultTyping(DefaultTyping.NON_FINAL);
  55. jackson2JsonRedisSerializer.setObjectMapper(objectMapper);
  56. return jackson2JsonRedisSerializer;
  57. }
  58. }