在官方《Dubbo 开发指南》框架设计部分,给出了引用服务时序图:
另外,在官方《Dubbo 用户指南》集群容错部分,给出了服务引用的各功能组件关系图:
本文将根据以上两张图,分析服务引用的实现原理,并进行详细的代码跟踪与解析。
二、原理和源码解析 2.1 创建代理Dubbo 基于 Spring 的 Schema 扩展实现 XML 配置解析,DubboNamespaceHandler 会将 <dubbo:reference> 标签解析为 ReferenceBean,ReferenceBean 实现了 FactoryBean,因此当它在代码中有引用时,会调用 ReferenceBean#getObject() 方法进入节点注册和服务发现流程。
ReferenceBean.java
public Object getObject() throws Exception { return get(); }