码迷,mamicode.com
首页 > 编程语言 > 详细

dubbo-源码阅读之javaspi

时间:2018-07-31 21:50:07      阅读:99      评论:0      收藏:0      [点我收藏+]

标签:相关   span   throw   main   []   void   ext   可扩展   tor   

dubbo可扩展的点的类的对象创建 都是用类似javaspi的思想来做的。所以看后面代码 先熟悉一下java的SPI实现

如ServicesConfig的代码

private static final Protocol protocol = (Protocol)ExtensionLoader.getExtensionLoader(Protocol.class).getAdaptiveExtension();

JAVASPI的作用

服务(接口实现类)的自动发现。我们定义好一组接口标准。而具体实现调用者根据自身需求自己实现

JavaSPI简单使用

我们模拟我们做了一个框架(jar)  框架的正常运行需要相关配置。配置加载方式由使用者来实现

1.定义接口

/**
 * 加载配置文件的句柄
 */
public interface LoadConfigHandle {
    public String  load();
}

2.定义实现类

public class HttpLoadConfigHandle implements LoadConfigHandle {
    public String load() {
        System.out.println("正在用http请求加载配置文件数据");
        return "";
    }
}
public class XmlLoadConfigHandle implements LoadConfigHandle {
    public String load() {
        System.out.println("正在加载配置文件xml");
        return "";
    }
}

在resource创建META-INF文件夹,再创建一个与接口全名称同名的文件。将实现类配置进去

技术分享图片

com.liqiang.spi.XmlLoadConfigHandle
com.liqiang.spi.HttpLoadConfigHandle

3测试

    public static void main(String[] str) throws InterruptedException {
        ServiceLoader<LoadConfigHandle> serviceLoader = ServiceLoader.load(LoadConfigHandle.class);
        Iterator<LoadConfigHandle> iterator = serviceLoader.iterator();
        while (iterator.hasNext()) {
            LoadConfigHandle loadConfigHandle = iterator.next();
            loadConfigHandle.load();
        }
        
    }

技术分享图片

 

dubbo-源码阅读之javaspi

标签:相关   span   throw   main   []   void   ext   可扩展   tor   

原文地址:https://www.cnblogs.com/LQBlog/p/9397434.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!