我是靠谱客的博主 自觉故事,这篇文章主要介绍Java SPI深入理解与自定义扩展SPI,现在分享给大家,希望可以做个参考。

前言

SPI(service provider interface)即服务提供者接口,通俗来讲,提供方只需要给定接口的命名,入参及返回类型,具体的实现可以支持默认实现或让被调用方自己实现。SPI机制是JDK内置的一种服务发现,将服务接口与服务实现分离以达到解耦、大大提升了程序可扩展性的机制。引入服务提供者就是引入了SPI接口的实现者,通过本地的注册发现获取到具体的实现类,轻松可插拔SPI实现了动态加载和插件化。

API 与 SPI差异

API(Application Provide Interface)即应用提供接口,即应用提供接口,用户无需关心底层实现,与SPI正好相反,SPI需要被调用方自定义实现接口逻辑。

Java SPI的应用

我们熟知的经典SPI应用场景:1. mysql-connector driver的实现;2. 日志门面类接口的实现;3. spring中的自动装配等场景。主要步骤:

  1. 服务提供方定义接口
  2. 如果需要默认实现的话,在服务提供方项目resource下新建META-INF/services目录,反之在被调用放新建类似目录
  3. 在该目录下新建一个以接口全限定名为名称的文件
  4. 将接口的默认实现类全限定名写进文件中
  • 服务提供方定义接口
package com.example.zhangxing.hellospringbootstarter.spi;

最后

以上就是自觉故事最近收集整理的关于Java SPI深入理解与自定义扩展SPI的全部内容,更多相关Java内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部