美文网首页
一、SPI+Dubbo ExtensionLoader机制

一、SPI+Dubbo ExtensionLoader机制

作者: 恶魔幻心 | 来源:发表于2018-07-31 10:31 被阅读0次

    JavaSPI 

    实际上是“基于接口的编程+策略模式+配置文件”组合实现的动态加载机制。具体而言: 1. 定义一组接口, 假设是 autocomplete.PrefixMatcher; 2. 写出接口的一个或多个实现(autocomplete.EffectiveWordMatcher, autocomplete.SimpleWordMatcher); 3. 在 src/main/resources/ 下建立 /META-INF/services 目录, 新增一个以接口命名的文件 autocomplete.PrefixMatcher, 内容是要应用的实现类(autocomplete.EffectiveWordMatcher 或 autocomplete.SimpleWordMatcher 或两者); 4. 使用 ServiceLoader 来加载配置文件中指定的实现

    例:

    ExtensionLoader

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

    1、SPI机制加载具体的mapping,例:

    2、封装成具体的ExtensionLoader

    3、创建接口具体的代理实现

    getExtension 最后返回的是包装类(ProtocolFilterWrapper等)

    4、根据URL参数,获取加载哪个实现的Protocol


    相关文章

      网友评论

          本文标题:一、SPI+Dubbo ExtensionLoader机制

          本文链接:https://www.haomeiwen.com/subject/nwucvftx.html