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); } }
相关文章推荐
- java从键盘输入数据的两种方法
- 如何取得Spring管理的bean (请用第3种方法):
- Spring IOC源码详解之总体结构
- java 如何获取得到两个list中不同的数据
- java 执行Sql文件
- java学习笔记--Exception
- Eclipse 安装php插件
- javafx中vbox控件最下面的控件自动填充
- ACM基础——OJ上的Java代码提交规范
- Spring自定义消息转换器替换ResponseBody
- 【转】java反射详解
- 深入理解Java的接口和抽象类
- Spring @Transaction配置示例及发生不回滚原因深度剖析
- Java 类的卸载机制
- 【源代码】java.util.Vector
- 【通信】Netty JBOSS提供的一个java开源框架
- Java进阶(八)Java加密技术之对称加密 非对称加密 不可逆加密算法
- Java进阶(八)Java加密技术之对称加密 非对称加密 不可逆加密算法
- java如何读写txt文件
- JAVA最多支持多少个线程