SPI
SPI全称Serice Provider Interface,是一种服务发现的实现机制。SPI的本质是将接口实现类的全限定名配置在文件中,并由服务应用程序读取配置文件,加载实现类。
- 使用SPI的好处,在程序运行时,动态的替换接口实现类,由此可以为我们的程序提供更多动态拓展的功能。
Dubbo的SPI
- Dubbo没有使用java原生的SPI机制,而是对其进行了增强,重新实现了一套SPI机制,从而实现更多的拓展。Dubbo SPI 的相关逻辑被封装在了ExtensionLoader类中,通过ExtensionLoader,我们可以加载指定的实现类(因为配置文件中以键值对的形式存放了接口实现类)。
ExtensionLoader类的内部实现
- 首先通过 ExtensionLoader 的静态getExtensionLoader 方法获取一个ExtensionLoader实例。
- 再通过 ExtensionLoader 的 getExtension 方法获取拓展类对象。
网友评论