Spring Boot与Spring Cloud升级后Jackson ObjectMapper已注册模块缺失导致反序列化失败求助
Spring Boot与Spring Cloud升级后Jackson ObjectMapper已注册模块缺失导致反序列化失败求助
各位大佬好,最近我在升级我的Spring应用时遇到了一个棘手的问题,想请教一下大家:
我这次升级调整的依赖版本如下:
- Spring Cloud:从
2023.0.0升级到2023.0.3 - Spring Boot:从
3.2.5升级到3.3.2
升级完成后,发现消息序列化/反序列化出现了异常,看起来是之前配置的继承关系映射失效了。具体报错信息如下:
Cannot construct instance of
my interface(no Creators, like default constructor, exist): abstract types either need to be mapped to concrete types, have custom deserializer, or contain additional type information
这个报错里的接口,是我们用Spring Cloud Messaging发送消息时的payload相关接口。之前为了处理抽象类型的反序列化,我们是通过把自定义的类型解析模块声明为Spring Bean来实现的,核心代码大概是这样的:
SimpleAbstractTypeResolver resolver = new SimpleAbstractTypeResolver() { // 这是针对相关Jackson问题的临时解决方法 @Override public JavaType resolveAbstractType(DeserializationConfig config, BeanDescription typeDesc) { return findTypeMapping(config, typeDesc.getType()); } }; // 后续将resolver注册到ObjectMapper的代码...
现在升级之后,这个自定义的类型解析器好像不再生效了,有没有朋友遇到过类似的情况?或者了解Spring Boot/Spring Cloud升级后,Jackson ObjectMapper的配置逻辑有什么变化吗?我该怎么调整才能让这个抽象类型解析器重新正常工作呢?
备注:内容来源于stack exchange,提问作者Wojciech Piotrowiak
相关产品推荐
相关产品推荐

