Dubbo

原创
08/06 20:24
阅读数 42

泛化调用

在提供端,比起常规的dubbo调用,泛化调用会多经过一个 GenericFilter,即判断是泛化方法才会经过该Filter进行处理。主要以下几个处理步骤:

1.首先根据方法签名,通过Java反射获取Method对象

Method method = ReflectUtils.findMethodByMethodSignature(invoker.getInterface(), name, types);

2.根据不同的generic配置,对参数列表进行反序列化,比如之前介绍的将Map转换为POJO

3.进行方法调用

4.根据generic 的配置,对返回结果进行转换处理

在dubbok中,generic有以下几种配置

  • true:  默认值,使用PojoUtils进行入参反序列化,和返回值序列化
  • json:  使用PojoUtils进行入参反序列化,和Json序列化方式对返回值序列化
  • nativejava: 使用NativeJavaSerialization进行处理入参数,即byte[] => 方法参数,以及返回值序列化,结果 => byte[]
  • raw.return: 使用PojoUtils进行入参反序列化,性能考虑,返回值不做处理直接返回
展开阅读全文
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
在线直播报名
返回顶部
顶部