dubbo拓展点机制的IOC特性

来源:互联网 发布:http是什么 java题 编辑:程序博客网 时间:2024/05/17 21:50

          以前写过一篇介绍Dubbo拓展点加载机制的文章,分析的比较表面化,人嘛,

认识事物总有一个从浅到深的过程,所以随着对Dubbo源码的深入研究,发现Dubbo

拓展点加载中也加入了类似Spring中的IOC机制来主动给需要的Bean注入属性,

现在分析一下的实现(现在对于原理实现探究像找了魔一样)。

      Dubbo的拓展点加载器(ExtensionLoader)是一个Dubbo的各种组件Bean管理容器,

当加载特定的拓展时,加载器会给需要加载的Bean注入需要类型的实例的适配类,譬如这里

以Dubbo服务发布时,注册中心实例的获取为例,当服务暴露时,会向注册中心注册服务的信息,

在此之前需要获取类实例,流程图如下:这个图是调用过程,然后IOC特性发生在getExtension(..)中,

上图的调用流程可以说是Dubbo中一种主动注入依赖的模板,理解了它,基本就把握了Dubbo拓展点加载的IOC特性。

        看一下源码: 

   

     这里稍微介绍一下Dubbo对拓展工厂类的管理机制,由于Dubbo既要依赖Spring容器来管理本地的业务服务类bean(譬如暴露的用户中心服务),又要自己管理本身服务组件(譬如注册中心、Dubbo协议等组件),所有Dubbo框架维护了两套bean的管理容器  SpringExtensionFactory和SpiExtensionFactory, 为了在使用时,提供统一的服务接口,Dubbo又定义了适配工厂类 AdaptiveExtensionFactory,由它统一负责提供调用的入口, 源码如图 :


所以以后看到Dubbo的源码,发现如果类中定义了某个对象类型的属性,却不知道Dubbo是如何注入值的,不要再一脸懵逼,它就是在加载拓展时,动态注入的

,这就是Dubbo扩展机制的IOC特性!


总重每一个坚持改变,让现状变得更好的人!!

    

0 0
原创粉丝点击