Java SPI 实例,javaspi实例
分享于 点击 12278 次 点评:225
Java SPI 实例,javaspi实例
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);
}
}
相关文章
- 暂无相关文章
用户点评