Spring Redis序列化异常:无法构造Category实例求助
解决思路
核心问题
异常明确指出:Category类缺少可用于反序列化的构造器(无默认构造函数,也没有基于属性/委托的创建器)。因为你用了Lombok的@Builder注解,默认只会生成Builder相关代码,不会生成无参构造函数,而Jackson反序列化时需要构造实例的入口。
具体解决方法
方法一:添加无参构造函数
给Category和Data类加上@NoArgsConstructor注解,让Lombok生成无参构造函数,满足Jackson的反序列化要求:@Builder @Getter @EqualsAndHashCode @ToString @NoArgsConstructor // 新增注解 public class Category { private String category; private String description; private List<Data> data; } @Builder @Getter @EqualsAndHashCode @ToString @NoArgsConstructor // 新增注解 public class Data { private int dataId; @JsonIgnore private Map<String, String> names; private String name; }如果需要保留Builder的全参构造能力,可以额外添加
@AllArgsConstructor注解,不过这不是必须项。方法二:让Jackson直接支持Builder模式
如果你不想添加无参构造函数,可以使用Lombok的@Jacksonized注解(要求Lombok版本≥1.18.14),它会自动配置Jackson使用Builder来创建实例:@Builder @Getter @EqualsAndHashCode @ToString @Jacksonized // 新增注解 public class Category { // 字段保持不变 } @Builder @Getter @EqualsAndHashCode @ToString @Jacksonized // 新增注解 public class Data { // 字段保持不变 }
额外配置检查
如果你的代码是直接调用opsForValue().set()存储MainList对象,建议给RedisTemplate补充设置默认序列化器,避免默认序列化器不匹配的问题:
template.setDefaultSerializer(genericJackson2JsonRedisSerializer);
内容的提问来源于stack exchange,提问作者user1555190
相关产品推荐
相关产品推荐

