1 | SPI 是一种用于动态加载服务的机制。 |
SPI 简介
1 | # SPI => 解耦(方便扩展) |
SPI 案例
老样子,先上照片,下面再放代码。
1 | 正所谓,实践出真知,我们不妨通过一个具体的示例来看一下,如何使用 Java SPI。 |
SPI 原理
先放图片,下面再讲。
1 | 上文中,我们已经了解 Java SPI 的要素以及使用 Java SPI 的方法。 |
1、ServiceLoader 的成员变量
1 | 先看一下 ServiceLoader 类的成员变量,大致有个印象,后面的源码中都会使用到。 |
2、ServiceLoader 的工作流程
1 | # (1)ServiceLoader.load 静态方法 |
3、SPI 和类加载器
1 | 通过上面两个章节中,走读 ServiceLoader 代码,我们已经大致了解 Java SPI 的工作原理。 |
4、Java SPI 的不足
1 | Java SPI 存在一些不足: |
SPI 应用场景
JDBC DriverManager
commons-logging
为了方便查看,省略了部分代码
1 | package org.apache.commons.logging; |
SpringFactoriesLoader
1 | package org.springframework.core.io.support; |