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 包中的实现类。
配置使用我们稍后再说,先说说加载类。作为一个拓展类ÿ