每日一博 | 剖析 SPI 在 Spring 中的应用
vivo 互联网服务器团队 - Ma Jian 一、概述 SPI(Service Provider Interface),是Java内置的一种服务提供发现机制,可以用来提高框架的扩展性,主要用于框架的开发中,比如Dubbo,不同框架中实现略有差异,但核心机制相同,而Java的SPI机制可以为接口寻找服务实现。SPI机制将服务的具体实现转移到了程序外,为框架的扩展和解耦提供了极大的便利。 得益于SPI优秀的能力,为模块功能的动态扩展提供了很好的支撑。 本文会先简单介绍Java内置的SPI和Dubbo中的SPI应用,重点介绍分析Spring中的SPI机制,对比Spring SPI和Java内置的SPI以及与 Dubbo SPI的异同。 二、Java SPI Java内置的SPI通过java.util.ServiceLoader类解析classPath和jar包的META-INF/services/目录 下的以接口全限定名命名的文件,并加载该文件中指定的接口实现类,以此完成调用。 2.1 Java SPI 先通过代码来了解下Java SPI的实现 ① 创建服务提供接口 package j...