spi 机制

JDK 的 SPI 机制
1、META-INF/services/org.speed.dubbo.spi.service.RpcService
文件的名称是接口的名称,里面的内容是接口实现类
2、ServiceLoader 加载 META-INF/services 文件全部反射实例化
缺点:
1、读取到文件后全部实例化,没有使用缓存
思考:类加载器

dubbo 的 SPI 机制
①:META-INF/services/org.speed.dubbo.spi.service.RpcService
文件的名称是接口的名称,里面的内容是key-value 值
pay=org.speed.dubbo.spi.service.PayRpcService,其中key为名称,value为实现类
②:实现类中有其他接口的实例变量,可以支持自动装入 (set 方法实现注入)
③:可以基于装饰方式实现代理,支持方法调用前、后拦截功能 (通过构造方法实现包装)
④:基于 URL 传递参数,通过参数生成代理类(通过字节码运行时生成类)
⑤:通过 RpcService order = ExtensionLoader.getExtensionLoader(RpcService.class).getExtension("order");
order 为查询的具体实现类,通常情况下这个名称为动态参数
AdaptiveClassCodeGenerator自动生成代理对象

image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。