Java中的SPI(Service Provider Interface)介绍及示例
来源:互联网 发布:淘宝官方打折软件 编辑:程序博客网 时间:2024/05/21 08:35
这种实现方式,感觉和我们通常的开发方式差不多,都是定义一个接口,然后子类实现父类中定义的方法,为什么要搞这么一套标准以及单独搞一个配置文件?这种方式主要是针对不同的服务提供厂商,对不同场景的提供不同的解决方案制定的一套标准,举个简单的例子,如现在的JDK中有支持音乐播放,假设只支持mp3的播放,有些厂商想在这个基础之上支持mp4的播放,有的想支持mp5,而这些厂商都是第三方厂商,如果没有提供SPI这种实现标准,那就只有修改JAVA的源代码了,那这个弊端也是显而易见的,也就是不能够随着JDK的升级而升级现在的应用了,而有了SPI标准,SUN公司只需要提供一个播放接口,在实现播放的功能上通过ServiceLoad的方式加载服务,那么第三方只需要实现这个播放接口,再按SPI标准进行打包成jar,再放到classpath下面就OK了,没有一点代码的侵入性。
以下是找到的几篇文章:
1、http://docs.oracle.com/javase/6/docs/api/java/util/ServiceLoader.html,这个是官方的文档,有对service的详细介绍,包括规范以及一个简单的示例,这个是学习SPI必须看的文档;
注:http://docs.oracle.com/javase/1.4.2/docs/guide/jar/jar.html#Service%20Provider,这个是1.4中对Service Provider的介绍,加载服务是通过sun.misc.Service进行加载的,这个也有相应的示例,照做就OK;
2、Java的SPI机制:http://www.2cto.com/kf/201012/79868.html,这个是国人写的一篇示例文章,也挺不错,里面也有一个简单的示例;
3、Developing a Service Provider using Java API(Service Provider Interface):http://blog.csdn.net/fenglibing/article/details/7083526,这篇文章是转的alexa发表在blogspot上面的,也是一个开发SPI的示例,有兴趣的也可以看看;
4、Add Mp3 capabilities to Java Sound with SPI:http://www.javaworld.com/javaworld/jw-11-2000/jw-1103-mp3.html,这是一个比较老的例子,基于jdk1.3的,因为在jdk1.3的时候还没有支持mp3格式,只支持AU, AIF, MIDI, and WAV等格式,也是一个值得参考的示例。
我这边也写了一个简单得不能够再简单的示例,源码可以这里下载:http://download.csdn.net/detail/fenglibing/3939882
本文出自:冯立彬的博客 http://blog.csdn.net/fenglibing/article/details/7083071
- Java中的SPI(Service Provider Interface)介绍及示例
- Java中的SPI(Service Provider Interface)介绍及示例
- Java中的SPI(Service Provider Interface)介绍及示例
- Java中的SPI(Service Provider Interface)介绍及示例
- Java中的SPI(Service Provider Interface)介绍及示例
- Java中的SPI(Service Provider Interface)介绍及示例
- Java中的SPI(Service Provider Interface)
- Java SPI--Service Provider Interface.
- SPI-Service Provider Interface
- SPI (Service Provider Interface)
- Java的Service Provider Interface(SPI)
- Java的SPI(Service Provider Interface)规范
- Java SPI(Service Provider Interface)简介
- java Service Provider Interface 简单示例
- 【Java实战】源码解析Java SPI(Service Provider Interface )机制原理
- SPI和service provider framework介绍
- SPI(service provider interface 服务提供者接口)
- Developing a Service Provider using Java API(Service Provider Interface)
- 工厂模式之--工厂方法模式
- Android studio more than one library with package name 'xxx.xxx.mylibrary'
- Swift-UI多选删除
- 使用Jacob合并多个word文档生成一个word文档
- Nginx开发从入门到精通-基础篇
- Java中的SPI(Service Provider Interface)介绍及示例
- Android:dagger2让你爱不释手-重点概念讲解、融合篇
- 开车遇暴雨请戴墨镜!快转起,很多人会感激你的!
- 黑马程序员:从2016互联网大会数据,看PHP语言发展潜力
- ugui组件添加事件处理的方法
- C#双缓冲实现方法(可防止闪屏)
- 富文本ueditor使用记录
- Android:dagger2让你爱不释手-终结篇
- 做U盘系统盘重装系统或win8转win7步骤