首先来看一段代码来引入今天的话题
// 强制转换成EchoService
EchoService echoService = (EchoService) userReadService;
// 回声测试
Object status = echoService.$echo("Ok");
Assert.equals(status, "Ok");
以上代码正常情况下返回值status=Ok。可是很明显,我们写的Dubbo服务接口并没有与EchoService接口有任何继承关系,这是如何实现的呢?
这里涉及到另外一个知识点,Dubbo接口远程调用时实际上都是通过生成代理对象实现的。拿调用方举例,spring xml配置方式如下:
<dubbo:reference id="userReadService" interface="com.test.service.UserReadService" check="false" version="1.0.0" timeout="3000" />
那么xml又是如何转换为对象的呢?实际上是依赖spring.handlers机制初始化的。我