Spring整合Dubbo原理

Spring整合Dubbo原理

chuxiwen 1,282 2023-03-04

Spring整合Dubbo原理

从@EnableDubbo入手

@EnableDubboConfig
@DubboComponentScan
public @interface EnableDubbo

@EnableDubboConfig

@Inherited
@Documented
@Import(DubboConfigConfigurationRegistrar.class)
public @interface EnableDubboConfig

该注解是读取配置文件,将配置文件中的读取后加载成不同的Config对象。dubbo中有以下Config的种类。

spring_dubbo_1

开始源码分析

进入DubboConfigConfigurationRegistrar

spring_dubbo_2

一步一步递进

spring_dubbo_3

遍历beanName,对bean信息进行完善

spring_dubbo_4

resolveSubProperties是从配置文件里读取数据,配置到xxxConfig中,生成map,然后对map进行bean定义完善,然后交给spring进行bean的生成

spring_dubbo_5

@DubboComponentScan

@Documented
@Import(DubboComponentScanRegistrar.class)
public @interface DubboComponentScan

该注解是加载DubboService和DubboReference。

加载@DubboService

先找到Service的后置处理器

spring_dubbo_6

从serviceAnnotationTypes中可以得知,dubbo可以识别这三种注解

spring_dubbo_7

因为继承了BeanDefinitionRegistryPostProcessor接口,找到接口方法

spring_dubbo_8

进入scanServiceBeans方法

spring_dubbo_9

对bean定义进行封装

spring_dubbo_10

buildServiceBeanDefinition将普通对象封装成dubbo的ServiceBean对象

spring_dubbo_12

判断是否存在该bean然后交给spring

spring_dubbo_11

加载DubboReference

配置DubboReference的后置处理器为ReferenceAnnotationBeanPostProcessor

从构造器中可以看出,有三种可以消费的注解

spring_dubbo_13

依然是从postProcessBeanFactory方法开始分析,这里不再讲述,太长了,大致就是在spring容器里面找,然后一系列加工,哈哈哈哈哈哈哈哈哈哈 ~

总结

对spring整合dubbo源码解析分析,增加了阅读源码能力,对几个注解的理解加深了,如果有时间,会完善该文章,看太久电脑了,脑壳晕,溜啦!!!


# dubbo学习