概述
前言
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中的自动装配等场景。主要步骤:
- 服务提供方定义接口
- 如果需要默认实现的话,在服务提供方项目resource下新建META-INF/services目录,反之在被调用放新建类似目录
- 在该目录下新建一个以接口全限定名为名称的文件
- 将接口的默认实现类全限定名写进文件中
- 服务提供方定义接口
package com.example.zhangxing.hellospringbootstarter.spi;
最后
以上就是自觉故事为你收集整理的Java SPI深入理解与自定义扩展SPI的全部内容,希望文章能够帮你解决Java SPI深入理解与自定义扩展SPI所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复