美文网首页
dubbo SpiExtensionFactory的设计初衷

dubbo SpiExtensionFactory的设计初衷

作者: 阿甘java | 来源:发表于2017-11-18 15:28 被阅读0次

1.扩展未知类分为:spi 和spring

spi的扩展对象存储在SpiExtensionFactory

spring的扩展对象存储在 SpringExtensionFactory

2.SpringExtensionFactory的设计初衷: 

a.设计的目的:方便开发者对扩展未知类的配置(可以用spi配置也可以spring bean实现)

b.SpringExtensionFactory在provider发布或consumer引用一个服务的时候,会把spring的容器托付给SpringExtensionFactory中去.具体代码为:ReferenceBean.setApplicationContext 和 ServiceBean.setApplicationContext 

 public void setApplicationContext(ApplicationContext applicationContext) {

this.applicationContext = applicationContext;SpringExtensionFactory.addApplicationContext(applicationContext);

}

c.当SpiExtensionFactory没有获取到对象的时候会遍历SpringExtensionFactory中的spring容器来获取要注入的对象. 具体代码:AdaptiveExtensionFactory.getExtension 

publicT getExtension(Classtype, String name) {

 for (ExtensionFactory factory : factories) { 

 T extension = factory.getExtension(type, name);

 if (extension != null) { 

 return extension; 

 }

 }

 return null; 

 } 

 3.SpringExtensionFactory目前的作用?

SpringExtensionFactory前期的设计初衷非常好,但是后来执行偏离了,没有按这个初衷去落地。因为从这SpringExtensionFactory.getExtension代码(如下:)可以看出,是从ApplicationContext获取对象的。

publicT getExtension(Classtype, String name) {

for (ApplicationContext context : contexts) {

if (context.containsBean(name)) {

Object bean = context.getBean(name);

if (type.isInstance(bean)) {

return (T) bean;

}

}

}

return null;

}

但是目前这套系统没有配置spring对象的任何痕迹;甚至连配置自定义filter类,也无法实现spring bean配置,只能spi配置。

相关文章

  • dubbo SpiExtensionFactory的设计初衷

    1.扩展未知类分为:spi 和spring spi的扩展对象存储在SpiExtensionFactory spri...

  • Dubbo分析之Serialize层

    Dubbo整体设计 关于Dubbo的整体设计可以查看官方文档,下图可以清晰的表达Dubbo的整体设计: 1.图例说...

  • dubbox

    Refdubbo example refdubbo学习参考简单之美谈dubbo设计dubbo总结dubbo微服务实...

  • Dubbo整体设计

    导读 本文主要分析Dubbo框架整体设计及层次划分,内容主要来源于官网 关键字 :Dubbo整体设计、Dubbo层...

  • dubbo源码阅读之集群

    1. 问题 如何设计dubbo的集群,如何配置和设计dubbo负载均衡策略,如何路由服务?针对这些问题,我们来理解...

  • 源码解读Dubbo分层设计思想

    一、Dubbo分层整体设计概述 我们先从下图开始简单介绍Dubbo分层设计概念: (引用自Duboo开发指南-框架...

  • 架构相关文章索引(1)

    Dubbo Dubbo架构设计详解 Dubbo实现RPC调用使用入门 Netty Netty百度百科 通俗地讲,N...

  • Dubbo的扩展机制

    为什么要了解Dubbo的扩展机制 Dubbo的设计中大量使用多态,通过Dubbo的扩展机制来决定调用方法的真正类型...

  • Dubbo网络模型(居然肝了两周才写完,吐血推荐)

    本篇为dubbo高性能剖析的下篇,侧重于剖析dubbo在网络层的源码实现及设计。(上篇传送门dubbo的线程模型[...

  • DUBBO研读总结

    研读dubbo源码已经有一段时间了,dubbo中有非常多优秀的设计模式和示例代码值得学习,但是dubbo的调用层级...

网友评论

      本文标题:dubbo SpiExtensionFactory的设计初衷

      本文链接:https://www.haomeiwen.com/subject/imievxtx.html