java spi示例

来源:互联网 发布:欧陆风云4 dlc mac 编辑:程序博客网 时间:2024/05/29 13:34

java spi示例

本文主要参考网上的一些文章,但是具体的地址找不到了。

好,下面说一下java的spi。java的spi实现了一种类似IOC的机制,把接口和类的依赖转到程序之外,实现了接口和类的松耦合。
先介绍一下spi的规则,就是在/resources/META-INF/services文件夹下需要有一个文件,这个文件是用接口的名称命名的。如下图:

然后,我们看一下具体的实现代码。
首先是一个接口:
Animal
package com.xueyou.spidemo;public interface Animal {    public void eat();}

然后是两个实现类:
package com.xueyou.spidemo;public class Cat implements Animal{    public void eat() {        System.out.println("cat eat...");    }}

package com.xueyou.spidemo;public class Dog implements Animal {    public void eat() {        System.out.println("dog eat...");    }}

这个是配置文件中的内容:
com.xueyou.spidemo.Catcom.xueyou.spidemo.Dog

在main函数中调用一下:
package com.xueyou.spidemo;import java.util.Iterator;import java.util.ServiceLoader;/** * Hello world! */public class App {    public static void main(String[] args) {        System.out.println("Hello World!");        ServiceLoader<Animal> serviceLoader = ServiceLoader.load(Animal.class);        Iterator<Animal> iterator = serviceLoader.iterator();        while (iterator.hasNext()){            Animal animal = iterator.next();            animal.eat();        }    }}

运行结果:

原创粉丝点击