Advertisement

Java SPI机制与ServiceLoader支持

阅读量:

1、SPI是什么

SPI的完整名称为Service Provider Interface(服务提供接口),这是一种专为第三方开发人员设计的API,旨在实现或扩展特定功能,能够有效支持框架的扩展性以及组件的替换操作,同时具备根据具体接口定位相应服务类的功能。

该机制的整体运作流程如下:

在这里插入图片描述

(图片来源:https://www.jianshu.com/p/46b42f7f593c)

Java SPI 实际上是一种融合了接口编程、策略模式以及配置文件机制的动态加载方式。

Java SPI的实现要素:

  • 首先需要明确服务与接口的具体名称;
  • 当各个服务提供者完成对接口的实现后,应在对应的jar包中的META-INF/services目录内,建立一个以“接口全限定名”作为文件名的文本文件,其中内容应为该实现类的完整限定名称;
  • 包含接口实现类的jar包需被放置于主程序的classpath路径之中;
  • 在服务调用方使用该接口时,需引入提供者的jar包,并借助java.util.ServiceLoader工具类动态加载提供者的模块。

全部评论 (0)

还没有任何评论哟~