【Java】java扩展机制SPI 实现
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了【Java】java扩展机制SPI 实现,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2065字,纯文字阅读大概需要3分钟。
内容图文
![【Java】java扩展机制SPI 实现](/upload/InfoBanner/zyjiaocheng/633/ee15e288acf94dc687b1d224704be50b.jpg)
一、SPI是什么
SPI机制(Service Provider Interface),是一种将服务接口与服务实现分离以达到解耦、大大提升了程序可扩展性的机制。引入服务提供者就是引入了spi接口的实现者,通过本地的注册发现获取到具体的实现类,轻松可插拔。
场景:比较典型的一个场景就是JDBC中加载驱动的过程。
二、使用demo
demo工程结构:
1)首先我们定义一个提供接口的三方包SpiInterface
public interface SpiInterface { public void method(); }
2)然后我们分别定义两个实现SpiInterface接口的三方实现SpiIml01、SpiIml02;
1、SpiIml01
public class SpiIml01 implements SpiInterface { public void method() { System.out.println("print SpiIml01"); } }
pom:引入三方接口包SpiInterface
<dependencies> <dependency> <groupId>com.robin</groupId> <artifactId>SpiInterface</artifactId> <version>1.0-SNAPSHOT</version> <optional>true</optional> </dependency> </dependencies>
2、SpiIml02
public class SpiIml02 implements SpiInterface { public void method() { System.out.println("print SpiIml02"); } }
pom:引入三方接口包SpiInterface
<dependencies> <dependency> <groupId>com.robin</groupId> <artifactId>SpiInterface</artifactId> <version>1.0-SNAPSHOT</version> <optional>true</optional> </dependency> </dependencies>
3)并且对于实现类项目,在各项目META-INF/services目录下创建一个以“接口全限定名”为命名的文件,内容为实现类的全限定名;
4)定义测试项目SpiDemo
SpiDemo
public class SpiDemo { public static void main(String[] args) { ServiceLoader<SpiInterface> load = ServiceLoader.load(SpiInterface.class); Iterator<SpiInterface> iterator = load.iterator(); while (iterator.hasNext()) { SpiInterface next = iterator.next(); next.method(); } } }
pom:引入三方接口包、以及连个实现包
<dependencies> <dependency> <groupId>com.robin</groupId> <artifactId>SpiIml02</artifactId> <version>1.0-SNAPSHOT</version> </dependency> <dependency> <groupId>com.robin</groupId> <artifactId>SpiInterface</artifactId> <version>1.0-SNAPSHOT</version> </dependency> <dependency> <groupId>com.robin</groupId> <artifactId>SpiIml01</artifactId> <version>1.0-SNAPSHOT</version> </dependency> </dependencies>
运行main方法:通过结果可知两个实现类都有获取到;获取的先后顺序,取决于你maven引入的顺序,谁在前谁先获取
内容总结
以上是互联网集市为您收集整理的【Java】java扩展机制SPI 实现全部内容,希望文章能够帮你解决【Java】java扩展机制SPI 实现所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。