很多Java开源项目中都有一个spi的package:
如:org.apache.activemq.tool.spi
org.apache.activemq.tool.spi.ActiveMQClassLoaderSPI
请问SPI是什么意思?
希望牛人出来讲解一下?
问题补充
Service Provider Interface的编写
和API有关又有区别
你可以参考一下
http://openide.netbeans.org/tutorial/api-design.html
译文地址
http://www.diybl.com/course/3_program/java/javaxl/20071018/77730.html
还有Apress的一本书
Practical.API.Design.Confessions.of.a.Java.Framework.Architect
中文译名: 《API设计实战》或者《实战API设计》
应该快出版了
spi是具体的厂商实现的,api则是提供给开发者调用的
例如jdbc就有一套spi和api,spi由数据库厂商实现,api则给开发人员使用
楼上说的有一定道理, 但也未必完全是
还有, 这些东西这么实现有一定道理, 就是实现与API分离。 这个是为了降低API代码的复杂度。 这些设计一定程度是可是说是代理模式。 实际上, SUN为了降低JAVA API代码的暴露程度, 避免大量的实现类被程序员被使用, 大量使用了这种设计模式,实际上, 大部分代码在com.sun包里实现了, 这也是不建议直接使用这些的主要原因。 这是做系统API比较好的手段。
SPI其实与具体厂商不一定有关系
可以看一下
Practical.API.Design.Confessions.of.a.Java.Framework.Architect
这本书