您的位置:首页 > 编程语言 > Java开发

Java SPI 实例

2015-07-24 16:37 716 查看

JAVA SPI实例

JAVA SPI实例
参考

步骤
新建接口

实现接口
mysql实现

oracle实现

服务发现
新建目录和文件

将服务实现类写入接口文件

测试

参考

java 6 spi doc

步骤

新建接口

package com.petecc.platform.foodsafe.spi;

/**
* @Description DatabaseInterface
* @author tanw
* @date 2015年7月24日 下午4:01:32
*/
public interface DatabaseInterface {

public void querySth();
}


实现接口

mysql实现

package com.petecc.platform.foodsafe.spi;

/**
* @Description MysqlQuery
* @author tanw
* @date 2015年7月24日 下午4:02:15
*/
public class MysqlQuery implements DatabaseInterface {

@Override
public void querySth() {
System.out.println("mysql database query something!");
}

}


oracle实现

package com.petecc.platform.foodsafe.spi;

/**
* @Description OracleQuery
* @author tanw
* @date 2015年7月24日 下午4:02:15
*/
public class OracleQuery implements DatabaseInterface {

@Override
public void querySth() {
System.out.println("oracle database query something!");
}

}


服务发现

新建目录和文件

在类路径下建立/META-INF/services/目录,目录中放文本文件,文件名是接口全名,本例中是com.petecc.platform.foodsafe.spi.DatabaseInterface

将服务实现类写入接口文件

在com.petecc.platform.foodsafe.spi.DatabaseInterface文件中一行一个实现,填入接口实现类全名,如本例中文件内容为

com.petecc.platform.foodsafe.spi.MysqlQuery
com.petecc.platform.foodsafe.spi.OracleQuery


测试

package com.petecc.platform.foodsafe.spi;

import java.util.ServiceLoader;

/**
* @Description SPIMain
* @author tanw
* @date 2015年7月24日 下午4:03:19
*/
public class SPIMain {
public static void main(String[] args) {

ServiceLoader<DatabaseInterface> loaders = ServiceLoader
.load(DatabaseInterface.class);

int i=0;

for (DatabaseInterface in : loaders) {
in.querySth();
i++;
}

System.out.println();
System.out.println("找到服务实现类:"+i);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: