RedisConfig.java 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. package com.dtb.portal.config.redis;
  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.cache.interceptor.KeyGenerator;
  6. import org.springframework.context.annotation.Bean;
  7. import org.springframework.data.redis.connection.RedisConnectionFactory;
  8. import org.springframework.data.redis.core.RedisTemplate;
  9. import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
  10. import org.springframework.data.redis.serializer.StringRedisSerializer;
  11. import org.springframework.stereotype.Component;
  12. import java.lang.reflect.Method;
  13. @Component
  14. public class RedisConfig {
  15. @Bean
  16. public KeyGenerator keyGenerator() {
  17. return new KeyGenerator() {
  18. @Override
  19. public Object generate(Object target, Method method, Object... params) {
  20. StringBuilder sb = new StringBuilder();
  21. sb.append(target.getClass().getName());
  22. sb.append(method.getName());
  23. for(Object obj : params) {
  24. sb.append(obj.toString());
  25. }
  26. return sb.toString();
  27. }
  28. };
  29. }
  30. @Bean
  31. public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory) {
  32. RedisTemplate<String, Object> template = new RedisTemplate<String, Object>();
  33. template.setConnectionFactory(redisConnectionFactory);
  34. template.setKeySerializer(new StringRedisSerializer());
  35. Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
  36. StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
  37. ObjectMapper om = new ObjectMapper();
  38. om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
  39. om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
  40. jackson2JsonRedisSerializer.setObjectMapper(om);
  41. template.setValueSerializer(stringRedisSerializer);
  42. template.setHashKeySerializer(stringRedisSerializer);
  43. template.setHashValueSerializer(jackson2JsonRedisSerializer);
  44. return template;
  45. }
  46. }