栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

Dubbo-SPI机制

Dubbo-SPI机制

前言

SPI这个机制是java自身就带有的功能,往期文章JAVA-SPI机制 但是有一些不便之处,如下!

    不能按需获取实现类(也就是按需加载)不能实现IOC、AOP原生的JAVA-SPI是加载所有,会造成资源浪费

那么Dubbo的SPI就可以实现按需加载,那么也就可以避免资源浪费,和Spring结合实现IOC和APO,同时还新增加了自适应扩展机制。那么接下来我们就来看看Dubbo的SPI机制怎么玩!

Dubbo-API案例

环境准备
创建一个Maven工程,什么包都先不导入!

导入dubbo依赖

		
            org.apache.dubbo
            dubbo
            3.0.0
        
		或则
		
            com.alibaba
            dubbo
            2.6.2
        

本文使用的是2.6.2的这个版本,为了保持源码分析的时候代码一致,最好版本和我一样

编写接口LoginService

@SPI(FailbackCluster.NAME)
public interface LoginService {

    public String login();

}

提供QQ、微信、短信登录实现类
QqLoginServiceImpl

public class QqLoginServiceImpl implements LoginService {
    @Override
    public String login() {
        return "QQ登录";
    }
}

SmsLoginServiceImpl

public class SmsLoginServiceImpl implements LoginService {
    @Override
    public String login() {
        return "sms登录";
    }
}

WxLoginServiceImpl

public class WxLoginServiceImpl implements LoginService {
    @Override
    public String login() {
        return "WX登录";
    }
}

创建接口全限定名命名的文件

resources目录下创建meta-INF/dubbo目录 文件名为LoginService的全限定名

创建测试方法

public class DubboSpiApplication {

    public static void main(String[] args) {
        ExtensionLoader extensionLoader = ExtensionLoader.getExtensionLoader(LoginService.class);

        LoginService wx = extensionLoader.getExtension("wx");
        System.out.println(wx.login());
        LoginService qq = extensionLoader.getExtension("qq");
        System.out.println(qq.login());
    }

}

启动测试

那么这里就可以根据接口全限定名按需加载我们所需要的实现类,而不是想原生JAVA的SPI机制全部加载!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/707457.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号