RedisConfigure.java 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. package com.huimv.apiservice.config;
  2. import com.fasterxml.jackson.annotation.JsonAutoDetect;
  3. import com.fasterxml.jackson.annotation.PropertyAccessor;
  4. import com.fasterxml.jackson.databind.ObjectMapper;
  5. import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
  6. import org.springframework.context.annotation.Bean;
  7. import org.springframework.context.annotation.Configuration;
  8. import org.springframework.data.redis.connection.RedisConnectionFactory;
  9. import org.springframework.data.redis.core.RedisOperations;
  10. import org.springframework.data.redis.core.RedisTemplate;
  11. import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
  12. import org.springframework.data.redis.serializer.StringRedisSerializer;
  13. /**
  14. * @author yinhao
  15. */
  16. @Configuration
  17. public class RedisConfigure {
  18. @Bean
  19. @ConditionalOnClass(RedisOperations.class)
  20. public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
  21. RedisTemplate<String, Object> template = new RedisTemplate<>();
  22. template.setConnectionFactory(factory);
  23. Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>(Object.class);
  24. ObjectMapper mapper = new ObjectMapper();
  25. mapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
  26. mapper.activateDefaultTyping(mapper.getPolymorphicTypeValidator(), ObjectMapper.DefaultTyping.NON_FINAL);
  27. jackson2JsonRedisSerializer.setObjectMapper(mapper);
  28. StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
  29. // key采用 String的序列化方式
  30. template.setKeySerializer(stringRedisSerializer);
  31. // hash的 key也采用 String的序列化方式
  32. template.setHashKeySerializer(stringRedisSerializer);
  33. // value序列化方式采用 jackson
  34. template.setValueSerializer(jackson2JsonRedisSerializer);
  35. // hash的 value序列化方式采用 jackson
  36. template.setHashValueSerializer(jackson2JsonRedisSerializer);
  37. template.afterPropertiesSet();
  38. return template;
  39. }
  40. }