[SPI的设计目标] 面向对象的设计里,模块之间是基于接口编程,模块之间不对实现类进行硬编码. 一旦代码里设计具体的实现类,就违法了可插拔的原则,如果需要替代一种实现,就要修改代码. 为了实现在模块装配的时候,不在模块里面写死代码,就需要一种服务发现机制. Java spi 就是提供了这样一种机制: 为某个接口寻找服务实现的机制.有点类似IOC的思想,就是讲装配的控制权转移到代码之外. [SPI的具体约定] 当服务的提供者(provider),提供了一个接口多种实现时, 一般会在jar包的MET…