dubbo解析-介绍服务端和客户端启动和服务调用步骤

本文基于dubbo 2.7.5版本代码

前面的文章介绍了很多dubbo的各个组件,本文将对通过介绍启动和服务调用过程梳理一下这些组件,也让大家对dubbo的全局有一个了解。

一、服务端启动

1、spring启动调用后处理器ServiceAnnotationBeanPostProcessor,该后处理器是通过@EnableDubbo引入的,该后处理器完成了下面三件事:

  • 注册DubboBootstrapApplicationListener
  • 创建DubboClassPathBeanDefinitionScanner对象,该类用于扫描@Service注解
  • 遍历每个@Service注解的类,针对每个类创建一个创建ServiceBean的BeanDefinition对象,并将@Service的属性信息设置到BeanDefinition对象,之后将BeanDefinition对象注册到容器,名字为:ServiceBean:+接口名+Version+group

2、spring启动时根据BeanDefinition创建对应的ServiceBean对象;
3、spring容器启动完毕后,发布事件ContextRefreshEvent;
4、dubbo使用第一步注册的监听器DubboClassPathBeanDefinitionScanner监听到ContextRefreshEvent事件,该监听器调用DubboBootstrap.start()启动DubboBootstrap;
5、下面的步骤如下图:
在这里插入图片描述

二、客户端启动

spring启动调用后处理器ReferenceAnnotationBeanPostProcessor,该后处理器是通过DubboComponentScanRegistrar注册到spring容器的,而DubboComponentScanRegistrar是由@EnableDubbo引入的,该后处理器完成了:

  • 扫描类的属性是否有注解@Reference
  • 如果有,则创建对应的ReferenceBean对象并注册到spring容器
  • 调用ReferenceBean对象的get方法,创建远程服务代理对象
  • 代理对象创建完毕后,spring将代理赋值给对应的@Reference注解的属性

这里面最关键的是ReferenceBean对象的get方法,下面介绍一下这个方法的流程:
在这里插入图片描述

三、服务调用

当消费端调用时,其实调用的是上一小节里面最后生成的代理对象。
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值