dubbo与spring整合
dubbo在解析配置的时候,会将每个配置对应的配置类对应起来,然后将所有的配置类都生成一个BeanDefinition,最后放入spring容器
@Service
处理@Service:
- 第一步:自己构建了一个扫描器对象,这个扫描器对象继承了spring的扫描器,然后去调用spring的扫描功能将dubbo指定的注解扫描成BeanDefinition
注册到spring容器
(服务逻辑相关的bean
),就是作为spring的一个bean注册到容器中,这就完成了类似spring的@Servie的工作 - 第二步:生成一个dubbo服务ServiceBean(
服务属性+服务导出相关的bean
),将@Service中配置的属性赋值到ServiceBean中,beanName=”Service:版本:分组“ 放入spring容器。在ServiceBean中有一个ref属性指向的第一步生成的spring普通对象
。 - 第三步:当spring容器启动完成后,通过事件机制dubbo开始
进行服务注册到注册中心
,也就是服务的导出流程
dubbo与spring整合之@Service、@Reference注解处理过程
ServiceBean
:包括@Service注解上的属性和dubbo.properties中的配置对象,并且实现了ApplicationListener接口(当spring启动,就export服务)
@Reference
- ReferenceBean:对应
ServiceBean
,并且实现了FactoryBean接口(通过get方法可以得到代理对象)【放入spring的ioc容器】 - 代理对象