SpringBoot项目中Jackson反序列化时的多态配置

本文介绍了在SpringBoot项目中使用Jackson进行反序列化时如何处理多态场景,通过接口示例和类图结构展示了如何不违反开闭原则地实现这一功能。详细讨论了在父类和子类中配置反序列化的策略,并提供了相关示例代码供参考。
摘要由CSDN通过智能技术生成

需求描述:
项目中可能有这么一种情况,我们对外提供一个http接口服务,但是这个接口需要接收某一类具有共同特征的参数(父类 – 子类)。比如一个消息服务接口去提供发送邮件,短信,根据传入的消息类型不同而调用不同的发送逻辑,即接口接收父类类型,传入的参数需要反序列化为实际的子类类型。

接口示例


/**
 * 暴露http接口,供feign调用
 *
 * @author tangjizhouchn@foxmail.com
 * @date 2019/9/10
 */
@RestController
public class MessageController {
   

    @Autowired
    private RabbitTemplate rabbitTemplate;

    @PostMapping("/api/v1/send")
    public void send(@RequestBody MessageContext messageContext) {
   
        rabbitTemplate.convertAndSend("t_message", messageContext);
    }

}

类图结构

接口接收一个父类类型,但是实际上传入的类型为子类类型。
在这里插入图片描述

根据类型反序列化(多态支持)

父类

/**
 * 消息体父类
 *
 * @author tangjizhouchn@foxmail.com
 * @date 2019/9/10
 */
@Data
// 根据字段
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值