1. <!--fastjson依赖-->
    2. <dependency>
    3. <groupId>com.alibaba</groupId>
    4. <artifactId>fastjson</artifactId>
    5. <version>1.2.33</version>
    6. </dependency>
    1. package com.lyd.springsecurity1.utils;
    2. import com.alibaba.fastjson.JSON;
    3. import com.alibaba.fastjson.serializer.SerializerFeature;
    4. import com.fasterxml.jackson.databind.JavaType;
    5. import com.fasterxml.jackson.databind.type.TypeFactory;
    6. import org.springframework.data.redis.serializer.RedisSerializer;
    7. import org.springframework.data.redis.serializer.SerializationException;
    8. import com.alibaba.fastjson.parser.ParserConfig;
    9. import java.nio.charset.Charset;
    10. /**
    11. * Redis使用FastJson序列化
    12. *
    13. * @author sg
    14. */
    15. public class FastJsonRedisSerializer<T> implements RedisSerializer<T>
    16. {
    17. public static final Charset DEFAULT_CHARSET = Charset.forName("UTF-8");
    18. private Class<T> clazz;
    19. static
    20. {
    21. ParserConfig.getGlobalInstance().setAutoTypeSupport(true);
    22. }
    23. public FastJsonRedisSerializer(Class<T> clazz)
    24. {
    25. super();
    26. this.clazz = clazz;
    27. }
    28. @Override
    29. public byte[] serialize(T t) throws SerializationException
    30. {
    31. if (t == null)
    32. {
    33. return new byte[0];
    34. }
    35. return JSON.toJSONString(t, SerializerFeature.WriteClassName).getBytes(DEFAULT_CHARSET);
    36. }
    37. @Override
    38. public T deserialize(byte[] bytes) throws SerializationException
    39. {
    40. if (bytes == null || bytes.length <= 0)
    41. {
    42. return null;
    43. }
    44. String str = new String(bytes, DEFAULT_CHARSET);
    45. return JSON.parseObject(str, clazz);
    46. }
    47. protected JavaType getJavaType(Class<?> clazz)
    48. {
    49. return TypeFactory.defaultInstance().constructType(clazz);
    50. }
    51. }