大家好,我是小菜。 一个希望能够成为 吹着牛X谈架构 的男人!如果你也想成为我想成为的人,不然点个关注做个伴,让小菜不再孤单!
本文主要介绍
SPI 机制
如有需要,可以参考
如有帮助,不忘 点赞 ❥
微信公众号已开启,菜农曰,没关注的同学们记得关注哦!
我们上篇文章讲到了 Java 中 Agent 用法,不少小伙伴都觉得该方式比较偏门,平常开发不常用(几乎没用)。其实不然,不常用是跟项目挂钩,项目不常用不代表该方法机制不常用,因此很多时候我们学习不能坐井观天,认为项目中没用到就可以不学,跟着项目成长往往不能成长~!
上篇跳转入口:Java 高级用法,写个代理侵入你?
那么这篇我们将继续讲 Java 中的另一个知识点,也就是 SPI
机制,乍听感觉依然陌生,这时可别再打退堂鼓!往下看你就会发现原来平时开发中经常看到!
一、SPI
我们这篇文章以问题
作为导向,用问题来驱动学习,小菜先抛出几个问题,下面将针对这几个问题进行解释并扩展
- 什么是 SPI ?
- SPI 和 API 的区别?
- 平常中有使用到 SPI 吗?
1、什么是 SPI
SPI 是三个单词的缩写 S
ervice P
rovider I
nterface,字面意思:服务提供接口。它是 Java 提供的一套用来被第三方实现或者扩展的接口,它可以用来启用框架扩展和替换
组件。具体作用便是为这些被扩展的 API 寻找服务实现。
而Java SPI 便是 JDK 内置的一种服务提供发现机制,常用于创建可扩展、可替换组件的应用程序,是java中模块化
与插件化
的关键。
这里我们提到了两个概念,分别是 模块化
和插件化
。模块化很好理解,就是将一个项目分成多个模块,模块间可能存在相互依赖(也就是通过 maven 的方式),有使用微服务开发的同学就毫不陌生了,如果没有使用微服务开发也不打紧,单体项目中为了界定 control,service,repository层,也会将每个领域单独提取成模块,而不是以目录的方式~