Spring与Dubbo整合原理与源码分析
【1】注解@EnableDubbo
【2】注解@EnableDubboConfig
1)DubboConfigConfigurationRegistrar类的作用
2)registerBeans做了什么
3)DubboConfigConfiguration类展示
4)那么必然又会解析到@EnableDubboConfigBindings注解
5)registrar.registerBeanDefinitions方法的调用情况
6)单个DubboConfigBindingBeanPostProcessor的展示(删减掉部分不怎么用到的)
【3】注解@DubboComponentScan
1)导入的DubboComponentScanRegistrar类做了什么
【4】扫描@Service注解,并且进行处理
汇总说明:实际上便是通过处理器扫描@Service注解的类,生成两个Bean【类对应的普通Bean,与Dubbo中要用到的ServiceBean】
其中ServiceBean,是先根据注解上的信息填充对应的属性,后采用环境变量中获取配置的属性,来完成属性填充。
【5】扫描@Reference注解,并且进行处理
1)ReferenceAnnotationBeanPostProcessor类会被调用是基于继承关系
2)ReferenceAnnotationBeanPostProcessor中的方法
【6】图示:
Dubbo服务导出
【0】服务导出要做的几件事情:
【1】核心点记录
【2】ServiceBean是怎么进程服务导出的
1)ServiceConfig类#export()方法
2)方法1:ServiceConfig类#checkAndUpdateSubConfigs()方法
3)方法1.1,AbstractInterfaceConfig类#startConfigCenter()方法
4)方法1.2,AbstractInterfaceConfig类#refresh()方法
5)方法2,ServiceConfig类#doExport()方法
6)doExportUrlsFor1Protocol方法
7)protocol.export的调用
8)doLocalExport方法
9)当数据发生改变时 OverrideListener 监听者的处理
【3】汇总
Dubbo服务引入
【0】核心点记录
【1】服务要怎么引入(ReferenceConfig类#get()方法)
【2】检查并拿到最新配置(ReferenceConfig类#checkAndUpdateSubConfigs()方法)
【3】初始化生成代理对象(ReferenceConfig类#init()方法)
【4】生成代理对象(ReferenceConfig类#createProxy()方法)
【5】PROXY_FACTORY.getProxy等过程
【6】对URL的处理过程
1)从@Reference的url属性中配置多个url,然后采用字符串分割的形式拿出来,包装后塞入urls列表中
2)加载注册中心地址
【7】invoker的包装过程
1)前置说明
2)先是调用 REF_PROTOCOL.refer
3)再是调用CLUSTER.join
【8】RegistryProtocol里面的监听过程
【9】监听器触发时
Original: https://www.cnblogs.com/chafry/p/16795441.html
Author: 忧愁的chafry
Title: Dubbo2.7源码详解
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/800694/
转载文章受原作者版权保护。转载请注明原作者出处!