深入剖析 dubbo spi 机制(一)——扩展点加载

本文深入探讨了Java的SPI机制及其在Dubbo框架中的应用。Dubbo的SPI增强了服务发现,实现延迟加载,清晰的错误提示及IoC和AOP支持。文章详细介绍了ExtensionLoader如何加载和初始化扩展组件,包括自适应扩展类的生成及其作用。通过动态生成的代理类,Dubbo实现了在需要时实例化对应的扩展点,避免了不必要的资源消耗。同时,注入和AOP的实现进一步提高了框架的灵活性和可扩展性。
摘要由CSDN通过智能技术生成

spi机制是什么

Service Provider Interface 机制并不是新鲜的东西,而是 java 的一种服务发现机制。我的理解就是:我定义了一个接口,但是我并不关心实现。自有人按照我的接口去实现内容。当我需要接入别人的实现时,需要一种机制来保证他的内容被正确的加载运行,这就是 spi。

dubbo 的 spi 机制有什么不同

dubbo spi 也具有同样的功能,但是它更加的强大。在 dubbo 开发者文档中,spi 叫做扩展点。dubbo spi 增强的地方有三点。

  • 不会一次性实例化所有实现,而只在需要时实例化
  • 扩展点加载失败的原因有更清楚的展示
  • 增加了 IoC 和 AOP 的支持

概念性的东西交代的差不多了,接下来就看看到底是怎么回事吧。

dubbo spi 机制在框架中的运行原理

首先是配置文件,作为拓展类存在的 jar 包中,需要把扩展点的配置文件放置在 META-INF/dubbo 下,这个拓展点对开发者开放。但实际还有一个路径 META-INF/dubbo/internal 这个路径是用来加载内部的拓展点的。在配置文件中的声明形式如下:

xxx=com.alibaba.xxx.XxxProtocol

这其实是一种常见的 Key-Value 形式,XxxProtocol 就是 jar 包中的实现类。

配置使用我们稍后再说,先说说加载类。作为一个拓展类ÿ

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值