1 Star 0 Fork 0

Thomas / demo-spi

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

定义接口及实现

如:com.demo.spi.a.AService

声明接口实现

在目录/src/main/resources/META-INF/services(也就是jar包META-INF/services/)下以接口名称为文件名创建接口声明文件。 文件内容为接口的实现类,一行一个。 例如(demo-spi-a/src/main/resources/META-INF/services/com.demo.spi.a.AService):

com.demo.spi.a.AServiceImpl1
com.demo.spi.a.AServiceImpl2

接口声明文件不需要和接口的声明和实现类在同一个jar包中。

加载接口

使用ServiceLoader获取接口的实例。如:

        ServiceLoader<T> aServiceServiceLoader = ServiceLoader.load(clazz);
        Iterator<T> aServiceIterator = aServiceServiceLoader.iterator();
        while (aServiceIterator.hasNext()) {
            T next = aServiceIterator.next();
            if (next instanceof  AService) {
                AService aservice = (AService) next;
                System.out.println(aservice.greeting("a"));
            } else if (next instanceof BService) {
                BService bService = (BService)next;
                System.out.println(bService.greeting("b"));
            }
        }

空文件

简介

Spi简单使用 展开 收起
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
1
https://gitee.com/qingdaoheze/demo-spi.git
git@gitee.com:qingdaoheze/demo-spi.git
qingdaoheze
demo-spi
demo-spi
master

搜索帮助