Dubbo SPI机制简介
来源:互联网 发布:淘宝运动鞋正品店 编辑:程序博客网 时间:2024/06/05 21:03
SPI (service Provider Interface,是一种面向接口的编程方式。一个接口经常有多个实现类,通过SPI机制发现接口的实现服务。当服务的提供者,需要在META-INF/services下创建接口对应的文件,之后通过java提供的serviceLoader加载对应的实现,并装载实例化。
SPI demo:
package org.dubbo.demo.spi;/** * java spi接口。 * @author pc * */public interface HelloService {String hello(String name);}
package org.dubbo.demo.spi.impl;import org.dubbo.demo.spi.HelloService;/** * helloService实现类。 * @author pc * */public class DefaultHelloService implements HelloService{@Overridepublic String hello(String name) {// TODO Auto-generated method stubreturn name +" "+"default";}}
package org.dubbo.demo.spi.impl;import org.dubbo.demo.spi.HelloService;/** * HelloService实现类。 * @author pc * */public class ConsumerHelloService implements HelloService {@Overridepublic String hello(String name) {// TODO Auto-generated method stubreturn name + " "+"consumer";}}配置文件。
org.dubbo.demo.spi.impl.DefaultHelloServiceorg.dubbo.demo.spi.impl.ConsumerHelloService测试。
package org.dubbo.demo.spi;import java.util.ServiceLoader;public class SpiTest {final ServiceLoader<HelloService> serverLoader = ServiceLoader.load(HelloService.class);public static void main(String[] args){SpiTest test =new SpiTest();ServiceLoader<HelloService> services = test.serverLoader;for(HelloService service: services){System.out.println(service.hello("hello"));}}}
java ServiceLoader加载类的不足:
1 , 通过load加载所有的实现类,实现所有的实现类消耗资源。
2 , iterator迭代遍历,不能获取到某个特定的类,加载机制不够灵活。
dubbo扩展了java 的SPI机制。
1 , 添加了获取任意实现类的方法。
2 , 提供了AOP和IOC的支持。
3 , dubbo提供了wrapper自动包装的方式。(装饰者模式)
dubbo规定了放置扩展点配置⽂件META-INF/dubbo/接⼝全限定名作为SPI的配置文件,类实现配置文件:配置名=扩展实现类全限定名。
阅读全文
0 0
- Dubbo SPI机制简介
- 跟我学Dubbo系列之Java SPI机制简介
- 跟我学Dubbo系列之Java SPI机制简介
- dubbo SPI机制
- Java SPI机制简介
- Java SPI机制简介
- Dubbo中SPI扩展机制解析
- Java和dubbo中的SPI机制学习
- Dubbo入门学习--Dubbo服务提供接口SPI机制
- Dubbo-SPI
- Dubbo源码分析 ---- 基于SPI的扩展实现机制
- Dubbo 源码学习笔记 —— SPI的机制体现
- dubbo spi--实现细节
- dubbo spi原理解析
- dubbo基于spi扩展
- dubbo-spi扩展一
- dubbo-spi扩展二
- dubbo之SPI解析
- 推荐投入产出比高的seo策略教程
- summernote文本编辑器使用过程中遇到的坑
- 职责链(Chain of responsibility)模式
- MySQL中修改列名或列的数据类型
- 63. Unique Paths II
- Dubbo SPI机制简介
- secureCrt开启oracle
- ONVIF协议网络摄像机(IPC)客户端程序开发(9):鉴权(认证)
- pyhdf安装并读取hdf4文件
- Easyui实例--tree组件的使用1
- mui 支付微信、支付宝
- 蓝桥杯 分解质因数 Java解法(递归、非递归)
- 如何调试接口
- 直播 | 2017阿里双11在线技术峰会