SPI规范解决了什么问题
SPI的全称是 Service Provider Interface,目的是为了方便面向接口的编程。
定义了一个接口之后,具体的实现类可以在代码里实现这个接口,并在 META-INF/service/接口全限定名
这个文件下定义具体的实现。
java.sql.Driver,common-logging都使用了SPI。dubbo的扩展是基于SPI做了一层封装,在META-INF/dubbo/services目录下定义了扩展的实现。
代码中通过ServiceLoader.load(Speak.class)可以加载所有的SPI的具体实现。