SPI 全称为 (Service Provider Interface) ,是JDK内置的一种服务提供发现机制。 目前有很多框架用它来作服务的扩展发现, 简单来讲,它就是一种动态替换发现的机制, 举个例子来讲, 有个接口,想运行时动态的给它添加实现,你只须要添加一个实现,然后,把新加的实现,描述给JDK知道就行啦(经过改一个文本文件便可) 公司内部,目前Dubbo框架就基于SPI机制提供扩展功能。java
代码目录结构:git
class SPIMain { public static void main(String[] args) { ServiceLoader<HelloInterface> loaders = ServiceLoader.load(HelloInterface.class); for (HelloInterface in : loaders) { in.sayHello(); } } }
http://ivanzhangwb.github.io/blog/2012/06/01/java-spi/github
http://www.jianshu.com/p/46aa69643c97框架
http://my.oschina.net/pingpangkuangmo/blog/508963ide