image

编辑人: 桃花下浅酌

calendar2025-01-06

message7

visits786

Java的SPI机制

分析&回答

SPI 全称为 Service Provider Interface,是一种服务发现机制;SPI 的本质是将接口实现类的全限定名配置在文件中,并由服务加载器读取配置文件,加载实现类。这样可以在运行时,动态为接口替换实现类

SPI 机制的约定:

  • 在META-INF/services/目录中创建以接口全限定名命名的文件该文件内容为Api具体实现类的全限定名
  • 使用ServiceLoader类动态加载META-INF中的实现类
  • 如SPI的实现类为Jar则需要放在主程序classPath中
  • Api具体实现类必须有一个不带参数的构造方法

image-1691385068630

反思&扩展

很多人会同时想到 Dubbo 的 SPI机制,但Dubbo 并非使用 Java 原生的 SPI 机制,而是对其进行了增强,使其能够更好的满足需求。


喵呜面试助手: 一站式解决面试问题,你可以搜索微信小程序 [喵呜面试助手] 或关注 [喵呜刷题] -> 面试助手 免费刷题。如有好的面试知识或技巧期待您的共享!

创作类型:
原创

本文链接:Java的SPI机制

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。
分享文章
share