当前位置: 首页 > news >正文

让你彻底明白Java SPI与SpringBoot自动配置,内附实例代码演示

一、Java SPI的概念和术语

SPI:全称是Service Provider Interface:是一种基于ClassLoader来发现并加载服务的机制
SPI由三个组件构成:Service、Service Provider、ServiceLoader

  • Service:是一个公开的接口或抽象类,定义了一个抽象的功能模块
  • Service Provider:是Service的实现类
  • ServiceLoader:是SPI机制中的核心组件,负责在运行时发现并加载Service Provider

二、Java SPI的运行流程

在这里插入图片描述

三、Java SPI在JDBC中的应用

  1. 在Java SPI出现之前,我们是这样来使用JDBC的
    在这里插入图片描述
  2. JDBC要求Driver实现类在类加载的时候,能将自身的实例对象自动注册到DriverManager中,从而加载数据库驱动。
    在这里插入图片描述
  3. Java SPI逐渐融入JDBC
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

四、Java SPI的三大规范要素

  1. 规范的配置文件
    在这里插入图片描述
    在JDBC中的对应实现
    在这里插入图片描述
  2. Service Provider类必须具备无参的默认构造方法
    在这里插入图片描述
    在JDBC中的对应实现
    在这里插入图片描述
  3. 保证能加载到配置文件和Service Provider类
    在这里插入图片描述
    在JDBC中的对应实现
    在这里插入图片描述
    总结:上述除了导包需要自己动手以外,其他的手续都是导包之后,Java SPI自动完成的

五、从0开始,手撸一个SPI的应用实例

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

六、总体流程

在这里插入图片描述

七、SpringBoot自动配置

在这里插入图片描述

在这里插入图片描述

相关文章:

  • 【Uniapp】四、运行环境、终端及组件通信(完结)
  • LeetCode(Array)1365. How Many Numbers Are Smaller Than the Current Number
  • 云原生技能树-docker image 操作-练习篇
  • hids Elastic Security 系列1-Elastic Security介绍
  • 2022 自杀式年度总结(已发老板)
  • [创业之路-46] :动态股权机制 -1- 七步法(流程)
  • Python 实现 JSON 解析器
  • 【数据结构】万字深入浅出讲解顺序表(附原码 | 超详解)
  • Allegro如何设计线圈操作指导
  • c程序gcc编译常见报错及解决方法整理
  • SSH (Secure Shell)
  • 《蓝桥杯》30天拿下Python算法设计与分析【Day 11】
  • PyTorch初学者指南:数据预处理
  • Ribbon策略改变实现步骤(基于Eureka服务注册中心)
  • LeetCode和牛客网二叉树经典例题合集
  • C语言中的数组初始化常见方法
  • DT-6_TTL-WiFi透传模块介绍
  • 2023年网络安全比赛--JavaScript安全绕过中职组(超详细)
  • 最大油田(Python)
  • I.MX6ULL裸机开发笔记2:镜像文件