你应该了解的 Java SPI 机制 (2)

比如 Dubbo 中提供一系列的扩展:

cicada8-spi.md---0082zybply1gc6ue6zubvj30gq0pymyq.jpg

同类型的 RPC 框架 motan 中也提供了响应的扩展:

cicada8-spi.md---0082zybply1gc6ufacqt5j30lm0j8q5j.jpg

他们的使用方式都和 Java SPI 非常类似,只不过原理略有不同,同时也新增了一些功能。

比如 motan 的 spi 允许是否为单例等等。

再比如 MySQL 的驱动包也是利用 SPI 来实现自己的连接逻辑。

cicada8-spi.md---0082zybply1gc6uqg2ga2j30ii0bmdgz.jpg

总结

Java 自身的 SPI 其实也有点小毛病,比如:

遍历加载所有实现类效率较低。

当多个 ServiceLoader 同时 load 时会有并发问题(虽然没人这么干)。

最后总结一下,SPI 并不是某项高深的技术,本质就是面向接口编程,而面向接口本身在我们日常开发中也是必备技能,所以了解使用 SPI 也是很用处的。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wsfpzd.html