news 2026/6/15 18:16:56

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/6/15 19:05:54

JAVA进阶 THREAD学习12 多线程小结

多线程安全问题的应对 首先有前面的分析得出多线程的安全问题是由共享资源的修改混乱导致的。 那么我们根据这两个关键的点做出应对: 避开使用共享资源 使用没有共享资源的模型 避开修改 对共享资源只读不写使用不可修改的内容 直接应对线程安全问题 原子性顺序性可…

作者头像 李华
网站建设 2026/6/15 18:34:49

Go Web框架全面对比:哪一款最适合你的项目?

Go语言(Golang)自发布以来,以其简洁的语法、高效的性能以及出色的并发支持,成为了现代Web开发中一个重要的选择。Go本身是一个非常强大的语言,但由于Go的标准库并不提供一个“完整”的Web框架,许多社区开发…

作者头像 李华
网站建设 2026/6/15 17:59:04

Java开发的AI应用框架简述——LangChain4j、Spring AI、Agent-Flex

LangChain4j LangChain4j官网 star很多,文档齐全,在AI服务中,提供了丰富的功能,示例代码丰富。 简介 是一个功能丰富、易于使用的Java AI开发框架,特别适合需要快速集成和使用大型语言模型的Java开发者。 项目特点 …

作者头像 李华
网站建设 2026/6/15 14:30:18

基于 ANFIS 的非线性回归(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

作者头像 李华
网站建设 2026/6/15 19:11:13

FastAPI 路径操作依赖项

FastAPI 路径操作依赖项 引言 FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API,由 Python 3.6+ 支持并基于标准 Python 类型提示。依赖项是 FastAPI 中一个强大的特性,它允许我们在请求处理期间执行各种操作,例如身份验证、数据验证、权限检查等。本文将深入…

作者头像 李华
网站建设 2026/6/15 15:47:20

亲测好用10个AI论文工具,专科生轻松搞定论文写作!

亲测好用10个AI论文工具,专科生轻松搞定论文写作! AI 工具助力论文写作,专科生也能轻松应对 在如今的学术环境中,AI 工具正逐渐成为学生和研究者不可或缺的助手。尤其是在论文写作过程中,AI 不仅能够帮助提高效率&…

作者头像 李华