java SPI & spring factories

SPI 全称为 (Service Provider Interface) ,是JDK内置的一种服务提供发现机制。SPI是一种动态替换发现的机制, 比如有个接口,想运行时动态的给它添加实现,你只需要添加一个实现。我们经常遇到的就是java.sql.Driver接口,其他不同厂商可以针对同一接口做出不同的实现,mysql和postgresql都有不同的实现提供给用户,而Java的SPI机制可以为某个接口寻找服务实现。

dubbo的SPI

https://mp.weixin.qq.com/s/UpmBzTtp-sEnLR7j8mlr6A

对于springboot

spring-core包里定义了SpringFactoriesLoader类,这个类实现了检索META-INF/spring.factories文件,并获取指定接口的配置的功能

demo

https://juejin.im/entry/58d37630570c350058c2c15c

ref

https://juejin.im/post/5af952fdf265da0b9e652de3

https://blog.csdn.net/lldouble/article/details/80690446

https://www.hollischuang.com/archives/1791

https://www.cnblogs.com/lizo/p/6956427.html