什么是 SPI
SPI 全称是 Service Provider Interface,是一种将服务接口与服务实现分离以达到解耦、可以提升程序可扩展性的机制。引入服务提供者就是引入了 SPI 接口的实现者,通过本地的注册发现获取到具体的实现类,可以在运行时,动态为接口替换实现类,实现服务的热插拔。
Java SPI
Java SPI 中有四个重要的组件:
服务接口:一个定义了服务提供者实现类契约方法的接口或者抽象类。
服务实现:实际提供服务的实现类。
SPI 配置文件:文件名必须存在于 META-INF/services 目录中。文件名应与服务提供商接口完全限定名完全相同。文件中的每一行都有一个实现服务类详细信息,即服务提供者类的完全限定名。
ServiceLoader: Java SPI 关键类,用于加载服务提供者接口的服务。ServiceLoader 中有各种实用程序方法,用于获取特定的实现、迭代它们或再次重新加载服务。
通俗易懂就是可以动态的去调用接口的实现类。不需要我们自己去实例化实现类