# Java SPI(Service Provider Interface) API(Application Programming Interface)的区别 ## 简介 Java SPI(Service Provider Interface) API(Application Programming Interface)是 Java 编程中常用的两个概念。它们虽然看起来相似,但实际上有很大
原创 2023-08-09 17:55:31
54阅读
Java SPI(Service Provider Interface),是JDK提供的一套用来被第三方实现或者扩展的接口,通过java.util.ServiceLoader类加载META-INF/services/中的配置进行服务发现,可以用来启用框架扩展替换组件。主要好处在于解耦,可拔插,面向接口编程,本质是基于接口的编程+策略模式+约定配置文件组合实现的动态加载机制。 这种思想被广泛的应用
JDK SPI JDK 标准的 SPI 会一次性加载所有的扩展实现,如果有的扩展吃实话很耗时,但 也没用上,很浪费资源。 所以只希望加载某个的实现,就不现实了 DUBBO SPI 1,对 Dubbo 进行扩展,不需要改动 Dubbo 的源码 2,延迟加载,可以一次只加载自己想要加载的扩展实现。 3,
转载 2020-06-26 13:06:00
320阅读
2评论
定义:API 是应用程序之间的接口,规定了不同组件之间如何进行功能调用。API 提供了一组预定义的类方法,开发者可
原创 2024-10-25 15:42:25
181阅读
前言1、目的了解javaSPI实现原理;了解Spring-boot实现原理;会使用两者;2、搜索关键词JDKSpring中SPI的实现原理区别JDKSpring中SPI的实现原理区别一、javaSPI1.1简介SPI全称Service Provider Interface,是Java提供的一套用来被第三方实现或者扩展的API,它可以用来启用框架扩展替换组件。底层通过反射实现。1.2实现原
转载 2024-02-09 12:20:36
0阅读
目录何谓 SPIJava SPI 的应用DemoSPI 使用场景SPI API 在使用上的区别SPI API 在本质上的区别SPI 源码分析1、SPI的核心就是ServiceLoader.load()方法2、ServiceLoader核心代码介绍SPI 的优缺点?何谓 SPISPI 即 Service Provider Interface ,字面意思就是:“服务提供者的接口”,一般理
转载 2024-06-20 10:15:16
13阅读
大家好,我是三友~~今天来跟大家聊一聊Java、Spring、Dubbo三者SPI机制的原理区别。其实我之前写过一篇类似的文章,但是这篇文章主要是剖析dubbo的SPI机制的源码,中间只是简单地介绍了一下Java、Spring的SPI机制,并没有进行深入,所以本篇就来深入聊一聊这三者的原理区别。什么是SPI SPI全称为Service Provider Interface,是一种动态替换发现的
目录SPI是什么?怎么用实现原理SPI是什么?SPI :全称为 Service Provider Interface,是一种服务发现机制。它通过在ClassPath路径下的META-INF/services(META-INF.services无法识别)文件夹查找文件,自动加载文件里所定义的类。同Spring的IoC/DI类似。这一机制为很多框架扩展提供了可能,比如在Spring、JDBC、Dubb
转载 2024-01-25 20:20:57
0阅读
SPI 即 Service Provider Interface ,字面意思就是: “服务提供者的接口”,一般理解是:专门提供给服务提供者或者扩展框架功能的开发者去使用的一个接口。
原创 7月前
167阅读
最近新写了一个中间件「运行时动态日志等级开关」,其中使用Java SPI机制实现了自定义配置中心,保证良好的扩展性。 项目地址,走过路过可以点个star :) https://github.com/saigu/LogLeve...
原创 2022-05-15 21:10:10
385阅读
Dubbo官网DubboSpiDubbo高级进阶Spi应用Dubbo是由阿里巴巴开源的一款高性能、轻量级的开源Java Rpc(远程过程调用)框架,提供三大核心能力:面向接口的远程方法调用、智能容错负载均衡、服务自动注册与发现。在Dubbo的源码中,下面这种句式出现比较多,比如如下句式:通过ExtensionLoader获取Protocol接口的代理类。Protocol protocol = E
转载 2023-07-20 19:59:01
64阅读
概述:之前在学习spring框架时,重点了解了一些依赖注入(即:控制反转),这里最核心的概念就是反射的机制,那么我今天将冲3个方面了梳理一下new反射的概念 1、new只有在知道类名之后才能new,而反射有时候不需要   反射实例对象的方式   Class<?> c1 = Class.forName("cn.classes.OneCl
转载 2023-07-15 19:41:18
113阅读
  Dubbo 自己实现的SPI 用于获取一个实现类的对象一、为什么Dubbo要自己设计一套SPI    1.原始的JDK SPI不支持缓存: Dubbo设计了缓存对象-cachedInstances 是一个 new ConcurrentHashMap<String, Holder<Object>>()    2.原始JDK SPI不支持默认值: Dubbo设计默
转载 2023-08-18 14:54:36
61阅读
背景第一次听说 SPI 是阅读《软件框架设计的艺术》,以后陆续在 Log4Net Quartz.Net中发现了以这种形式组织代码的方式,本位给出为什么要区分 SPI API 的一个思考过程。从面向接口编程说起我们在“调用方”“实现方”之间引入了“接口”,·
原创 2021-07-21 15:10:37
489阅读
很多人在软件开发中经常会分不清 SDK 与 API ,今天就来浅谈一下两者之间的区别。直白地说,SDK 包含了 API ,是一套完整的,能完成更多功能的工具包,无论你想获取什么样的信息,SDK 里总能找到实现的办法。用通俗的话来举个例子: 有一杯密封饮料,它的名字叫做 “ SDK ” 。饮料上插着吸管,吸管的名字叫 “ API ” 。把你叫做 “ XX 系统”。 如果你想喝到 SDK 里的饮料(让
转载 2024-07-03 20:57:03
133阅读
目录背景价值1. 扩展主体:框架外部 vs 内部2. 接口与实现的绑定方式:“隐式约定” vs “显式编码”3. 设计目标:“开放给外部扩展” vs “内部逻辑解耦”一句话总结 背景价值 SPI(Service Provider Interface)的扩展机制与普通设计模式(如策略模式、工厂模式 ...
转载 1月前
348阅读
Dubbo 并未使用 Java SPI,而是重新实现了一套功能更强的 SPI 机,我们可以加载指定的实现类。
原创 2023-06-17 21:07:26
74阅读
今天下午面试被问到这个问题,当时没答上来,毕竟之前工作也都只是简单的使用,并没有真正去了解过两个之间的区别晚上自己查了一些文档,有点感悟在这里写一下首先两个都是国内比较火的微服务架构先介绍一下微服务微服务架构是一种架构模式,它将单一应用程序划分成一组小的服务,服务之间互相配合,达到最终的目的优点是可以将繁杂的代码堆分解,每一个微服务实现单一的功能,并通过接口与其他服务沟通合作每个微服务之间相互独立
转载 2024-10-27 07:13:26
15阅读
作者:废物大师兄 来源:www.cnblogs.com/cjsblog/p/14346766.html SPI(Service Provider Interface)是JDK内置的一种服务提供发现机制。本质是将接口实现类的全限定名配置在文件中,并由服务加载器读取配置文件,加载实现类。这样可以在运行时 ...
转载 2021-06-17 17:28:22
420阅读
SPI(Service Provider Interface)是JDK内置的一种服务提供发现机制。本质是将接口实现类的全限定名配置在文件中,并由服务加载器读取配置文件,加载实现类。这样可以在运行时
转载 2021-07-02 13:39:10
150阅读
  • 1
  • 2
  • 3
  • 4
  • 5