Spring整合Dubbo原理
从@EnableDubbo入手
@EnableDubboConfig
@DubboComponentScan
public @interface EnableDubbo
@EnableDubboConfig
@Inherited
@Documented
@Import(DubboConfigConfigurationRegistrar.class)
public @interface EnableDubboConfig
该注解是读取配置文件,将配置文件中的读取后加载成不同的Config对象。dubbo中有以下Config的种类。
开始源码分析
进入DubboConfigConfigurationRegistrar
一步一步递进
遍历beanName,对bean信息进行完善
resolveSubProperties是从配置文件里读取数据,配置到xxxConfig中,生成map,然后对map进行bean定义完善,然后交给spring进行bean的生成
@DubboComponentScan
@Documented
@Import(DubboComponentScanRegistrar.class)
public @interface DubboComponentScan
该注解是加载DubboService和DubboReference。
加载@DubboService
先找到Service的后置处理器
从serviceAnnotationTypes中可以得知,dubbo可以识别这三种注解
因为继承了BeanDefinitionRegistryPostProcessor接口,找到接口方法
进入scanServiceBeans方法
对bean定义进行封装
buildServiceBeanDefinition将普通对象封装成dubbo的ServiceBean对象
判断是否存在该bean然后交给spring
加载DubboReference
配置DubboReference的后置处理器为ReferenceAnnotationBeanPostProcessor
从构造器中可以看出,有三种可以消费的注解
依然是从postProcessBeanFactory方法开始分析,这里不再讲述,太长了,大致就是在spring容器里面找,然后一系列加工,哈哈哈哈哈哈哈哈哈哈 ~
总结
对spring整合dubbo源码解析分析,增加了阅读源码能力,对几个注解的理解加深了,如果有时间,会完善该文章,看太久电脑了,脑壳晕,溜啦!!!