目录
什么是SPI机制
SPI全称Service Provider Interface,是Java提供的一套供第三方实现或扩展使用的技术体系。主要通过解耦服务具体实现以及服务使用,使得程序的可扩展性大大增强,甚至无耦合(例如:需要的时候导入依赖,不需要的时候删除依赖即可,不需要其他操作)。
SPI基本原理
为什么需要SPI
思考一个场景,我们封装了一套接口以及对应默认实现,别人通过引入我们写好的包就可以使用这些接口以及默认实现来完成相应的操作,这本来没有什么问题,但是当使用者因为某些业务需求,需要进一步扩展,但在已经定义好的接口实现下,想要扩展并非那么的简单了。这时我们可以使用Java 提供的SPI机制。
SPI是如何实现的
JDK中,基于SPI的思想,提供了默认具体的实现,ServiceLoader。它会去扫描读取 META-INF/services/ 目录下的文件名为提供服务的接口的全类名