SPI机制例子

1.概念

SPI(Service Provider Interface),是JDK内置的一种服务提供发现机制,可以用来启用框架扩展和替换组件,主要是被框架开发人员使用。

2.例子

// 读取文档接口
public interface ReadDoc {
    List<String> readDoc(String keyword);
}


// 从文件读取
public class FileReadDoc implements ReadDoc {
    @Override
    public List<String> readDoc(String keyword) {
        System.out.println("file read");
        return Collections.emptyList();
    }
}


// 从网络读取
public class NetworkReadDoc implements ReadDoc {
    @Override
    public List<String> readDoc(String keyword) {
        System.out.println("network read");
        return Collections.emptyList();
    }
}


// 在resources下新建META-INF/services,以接口全限定名创建一个文件,如org.example.search.ReadDoc,内容为接口实现为全限定名,如org.example.search.FileReadDoc

// 测试
public class Test {
    public static void main(String[] args) {
        ServiceLoader<ReadDoc> loader = ServiceLoader.load(ReadDoc.class);
        Iterator<ReadDoc> iterator = loader.iterator();
        while (iterator.hasNext()) {
            ReadDoc readDoc = iterator.next();
            readDoc.readDoc("dragon");
        }
    }
}


// 运行结果:
file read

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值