0
点赞
收藏
分享

微信扫一扫

java: spi(Service Provider Interface)的使用


一、创建Service接口:

package cn.edu.tju;

public interface Demo {
String greeting();
}

二、定义几个服务提供者Service Provider类:

package cn.edu.tju;

public class HelloDemo implements Demo {
@Override
public String greeting() {
return "hello,world.";
}
}

package cn.edu.tju;

public class HiDemo implements Demo {
@Override
public String greeting() {
return "hi,world";
}
}

三、在resources下建META-INF目录,然后建serives子目录,在其中建立一个文件(服务的包名+接口名):
cn.edu.tju.Demo
文件内容如下:

cn.edu.tju.HiDemo
cn.edu.tju.HelloDemo

也就是列举了实现service的Service Provider的类的全限定名
四、SPI的使用:

package cn.edu.tju;

import java.util.Date;
import java.util.Iterator;
import java.util.ServiceLoader;

public class SpiTest {
public static void main(String[] args) {
//获取所有的Service Provider
ServiceLoader<Demo> demoList = ServiceLoader.load(Demo.class);
Iterator<Demo> it = demoList.iterator();
//遍历所有的Service Provider,并调用其提供的服务
while (it.hasNext()){
Demo demo = it.next();
System.out.println(demo.greeting());
}
}
}

五、运行结果:

java: spi(Service Provider Interface)的使用_ide


举报

相关推荐

0 条评论