2

SPI机制是什么,懂了_知识浅谈的技术博客_51CTO博客

 1 year ago
source link: https://blog.51cto.com/u_13794952/5693946
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

SPI机制是什么,懂了

精选 原创

知识浅谈 2022-09-21 11:01:55 博主文章分类:后端技术栈 ©著作权

文章标签 mysql spring 加载 文章分类 Java 编程语言 yyds干货盘点 阅读数177

SPI机制是什么,懂了_mysql

🍁 作者:知识浅谈,CSDN博客专家,阿里云签约博主,InfoQ签约博主,华为云云享专家
📌 擅长领域:全栈工程师、爬虫、ACM算法
💒 公众号:知识浅谈

SPI机制是什么总结
🤞这次都给他拿下🤞

正菜来了⛳⛳⛳

🎈SPI是什么?

SPI(service provider interface),是jdk中一种服务发现机制,相比于API,SPI是一种动态替换发现的机制,采用的是一种解耦的方法。
SPI是通过让API和实现分离的方法来达到动态解耦的目的
调用方—>API接口---->接口的实现。

优点:
由于引用了动态的思想,采用的解耦的方法,使用第三方服务模块的装配控制的逻辑与调用者逻辑业务代码分离,应用程序根据自己业务的情况启用第三方实现的服务模块。

缺点:
因为加载服务接口的时候,是通过把接口的实现类全部加载并且实例化一边,如果你不想使用某些类,大师这个类也经过加载并且实例化了,会有资源的浪费,并且是需要通过遍历的方式去查找需要使用的类。

🎈SPI的使用

在JDK中的使用:
首先创建META-INF/services文件夹,
其次在services下创建全量名为api接口的文件
最后是在创建的api接口文件中填写第三方实现类的全量名。

🎈SPI的应用场景

  1. 常见的Mysql依赖:
    我们一般只需要配置url,username,password,就可以使用了,但是怎么选择的mysql驱动?
    主要是因为mysql驱动包的META-INF/services文件夹下的java.sql.Driver文件中,有以下实现类的类全量名。
    com.mysql.jdbc.Driver
    com.mysql.fabric.jdbc.FabricMysqlDriver
    默认使用的就是第一个。
  2. JDK主要使用的是ServiceLoader
    Spring中使用的类是SpringFactoriesLoader,在 org.springframework.core.io.support包中
    两者的区别:
    文件路径不同 spring配置放在 META-INF/spring.factories中

以上是关于SPI的简单理解,希望有所理解。

  • 收藏
  • 评论
  • 分享
  • 举报

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK