Jackson2JsonMessageConverter.class中TypePrecedence.INFERRED推断类型配置反序列化解析2

本文探讨了在使用Jackson2JsonMessageConverter时,如何根据TypePrecedence.INFERRED配置进行消息反序列化。重点介绍了在@RabbitListener注解的方法中,如何根据参数类型推断反序列化类型,包括单一非注解参数、@Payload注解参数、Message类型参数等情况的处理逻辑。
摘要由CSDN通过智能技术生成

1、当使用@RabbitListener注解时,且Jackson2JsonMessageConverter的setTypePrecedence默认为TypePrecedence.INFERRED时即默认为从接收方法端参数类型推断出反序列化类型,此时接收消息方法参数分情况如下:
 a、当只有一个非注释参数,或者使用@Payload注释的参数时取到推断的反序列化类型。
 b、我们忽略org.springframework.amqp.core.Message类型的参数,因为它们不涉及转换。
 c、注意,org.springframework.messaging.Message类型参数会取到实际参数类型getActualTypeArguments()。
判断逻辑的源码如下:
org.springframework.amqp.rabbit.listener.adapter.MessagingMessageListenerAdapter.MessagingMessageConverterAdapter:
 

private final class MessagingMessageConverterAdapter extends MessagingMessageConverter {


  private final Object bean;

  private final Method method;

  private final Type inferredArgumentType;

  private MessagingMessageConverterAdapter(Object bean, Method method) {
   this.bean = bean;
   this.method = method;
   this.inferredArgumentType = determineInferredType();
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值