getExtension:指定名称的扩展点
getAdaptiveExtension:自定义扩展点
getActivateExtension:激活扩展点
一,JDK的SPI
SPI全称是Service provider Interface ,原本是JDK提供的一种发现机制,主要用来做服务的扩展实现。比如JDK提供的java.sql.Driver接口,具体的实现是由数据库的各大厂商实现的。MYSQL,ORACLE都对Driver有具体的实现。JDK通过SPI从classpath下面找到相对的的驱动连接数据库,JDK通过扫面resource/META-INF/services下面的扩展点来完成文件的加载。
1、创建Maven工程Driver定义一个接口
2、创建maven工程mysql-driver模块,引入Dirver模块,实现Driver接口
3、在resource/META-INF/service下面创建一个路径名称是com…xxx…Driver的文件,文件中添加实现类的全限定类名,通过ServiceLoader.load加载Driver
二、dubbo的SPI
dubbo的SPI也是采用了jdkSPI的思想,首先在META-INFO下面添加dubbo目录,目录下添加文件名是com.xx.Driver的文件。然后文件中需要key和value的方式,在通过dubbo提供的getExtension:指定名称的扩展点完成对类的加载。
注意:需要在Driver接口上加上@SPI注解
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/80b1f13451074bc9a00015d0a7f55932.png)