当前位置:   article > 正文

SpringBoot之redis使用FastJSON自定义序列化_parserconfig 自定义序列化

parserconfig 自定义序列化

1.1、使用自定义FastJSON来序列化你的对象 注意如果不配置白名单地址将会出现com.alibaba.fastjson.JSONException: autoType is not support具体可以看看我的转载文章https://blog.csdn.net/qq_37892957/article/details/89303903

  1. public class FastJson2JsonRedisSerializer<T> implements RedisSerializer<T> {
  2. public static final Charset DEFAULT_CHARSET = Charset.forName("UTF-8");
  3. private Class<T> clazz;
  4. public FastJson2JsonRedisSerializer(Class<T> clazz) {
  5. super();
  6. this.clazz = clazz;
  7. }
  8. //配置白名单 地址是实体类包地址
  9. static {
  10. ParserConfig.getGlobalInstance().addAccept("com.bean.springcloudcommon.model");
  11. }
  12. @Override
  13. public byte[] serialize(T o) throws SerializationException {
  14. if (o == null) {
  15. return new byte[0];
  16. }
  17. return JSON.toJSONString(o, SerializerFeature.WriteClassName).getBytes(DEFAULT_CHARSET);
  18. }
  19. @Override
  20. public T deserialize(byte[] bytes) throws SerializationException {
  21. if (bytes == null || bytes.length <= 0) {
  22. return null;
  23. }
  24. String str = new String(bytes, DEFAULT_CHARSET);
  25. return (T) JSON.parseObject(str, clazz);
  26. }
  27. }

1.2、配置RedisConfig

  1. @Configuration
  2. public class RedisConfig {
  3. @Bean
  4. public RedisSerializer fastJson2JsonRedisSerializer() {
  5. return new FastJson2JsonRedisSerializer<Object>(Object.class);
  6. }
  7. @Bean
  8. public RedisTemplate initRedisTemplate(RedisConnectionFactory redisConnectionFactory, RedisSerializer fastJson2JsonRedisSerializer) throws Exception {
  9. RedisTemplate redisTemplate = new RedisTemplate();
  10. redisTemplate.setConnectionFactory(redisConnectionFactory);
  11. redisTemplate.setKeySerializer(new StringRedisSerializer());
  12. redisTemplate.setValueSerializer(fastJson2JsonRedisSerializer);
  13. redisTemplate.setHashKeySerializer(new StringRedisSerializer());
  14. redisTemplate.setHashValueSerializer(fastJson2JsonRedisSerializer);
  15. redisTemplate.setDefaultSerializer(new StringRedisSerializer());
  16. redisTemplate.afterPropertiesSet();
  17. return redisTemplate;
  18. }
  19. }

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/天景科技苑/article/detail/897315
推荐阅读
相关标签
  

闽ICP备14008679号