news 2026/4/15 21:00:03

Java进阶-SPI机制

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Java进阶-SPI机制
SPI机制
  • 前言
  • 讲解代码
  • 过程分析

前言

  • 在主键版本中没有web.xml文件,springmvc如何通过继承AbstractAnnotationConfigDispatcherServletInitializer来启动SpringMVC?这就需要通过SPI机制来解决。先放一下大致思路:tomcat启动时会运行实现了servlet规范ServletContainerInitializer接口的实现类,而spring就是用SpringServletContainerInitializer类实现了该规范,因此执行时会实例化SpringServletContainerInitializer以达到启动mvc,另外在该类上有@HandlesTypes(WebApplicationInitializer.class)注解来实现mvc相关配置的加载,加载实现了WebApplicationInitializer的类

讲解代码

链接: JAVA之SPI机制

  • 以下讲解均已以上代码进行分析,请自行下载

过程分析

  1. java-spi它里面定义了Phone规范,以及默认的默认的实现类。

  2. java-spi-ext引用java-spi的模块可以实现扩展Phone接口规范

  3. 运行实现Phone的实现类并该类的路径在META-INF.services中配置

    public class ApplicationMain {
    public static void main(String[] args) {
    ServiceLoader serviceLoader=ServiceLoader.load(Phone.class);
    serviceLoader.forEach((Phone phone)->{
    if (phone instanceof DefaultPhone){
    phone.call();
    }

    if (phone instanceof IOSPhone){ phone.call(); } if (phone instanceof AndroidPhone){ phone.call(); } }); }

    }

从而达到了通过运行java-spi-ext模块来启动java-spi模块

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/12 21:08:15

JAVA进阶 Thread学习06 synchronized关键字

synchronized的性质 synchronized在前面的文章中被称为同步锁,其实它的名称还不只这个,它也叫互斥锁.但是这里为了方便理解就把它理解为厕所的门锁. 1.互斥 举个例子,有个人上厕所把门给锁上,门锁会从"无人"的绿色标识转换到"有人"的红色标识.在厕所外面的…

作者头像 李华
网站建设 2026/4/4 0:21:43

Java学习进阶知识篇

系列文章目录 提示:....................... 文章目录 系列文章目录前言一、类和对象 面向对象基本介绍类的基本使用属性构造方法和析构方法对象 二、总结 前言 提示:这里可以添加本文要记录的大概内容: Java面向对象编程的进阶知识 一、…

作者头像 李华
网站建设 2026/4/14 12:22:06

51单片机_数码管显示

51单片机_数码管显示 在51单片机的应用中,数码管显示是一项基础且常见的功能。数码管能够显示数字和一些字符,通过内部的发光二极管(LED)来实现。根据公共端的不同,数码管分为共阳极和共阴极两种类型。在共阴极数码管中,所有LED的…

作者头像 李华
网站建设 2026/4/15 3:42:41

Windows自动更新太烦?如何永久关闭win11自动更新

【2026实测】Win11自动更新怎么彻底关闭?Win11永久关闭自动更新最全教程 如果您希望阻止 Windows 11 在后台自动下载和安装更新,但系统仍持续弹出更新提示或强制重启,则可能是由于多种更新机制并行触发。以下是彻底关闭 Win11 自动更新的多种…

作者头像 李华