dubbo学习之路-SPI机制
dubbo学习之路-SPI机制
1.SPI
1.1Java SPI 原理
SPI是service provider interface简称。在java JDK中 内置的一种服务提供发现机制。它解决在一个框架中动态发现替换服务。常见的如:jdbc、日志框架等。
Java SPI 的实现原理:
1.2 代码演示
在服务中定义一个接口
//组装车
public interface AssembleCar {
//工艺步骤
void processingStep();
}
实现类
public class AssembleCarPartOne implements AssembleCar {
@Override
public void processingStep() {
System.out.println("part one processing step");
}
}
public class AssembleCarPartTwo implements AssembleCar {
@Override
public void processingStep() {
System.out.println("part two processing step");
}
}
classpath 下创建一个目录,该目录命名必须是:META-INF/service
文件名必须是扩展的接口的全路径名称
文件内部描述的是该扩展接口的所有实现类

java.util.ServiceLoader 的加载机制来发现
@SpringBootApplication
public class ClientspiApplication { public static void main(String[] args) { new SpringApplicationBuilder()
.sources(ClientspiApplication.class)
.bannerMode(Banner.Mode.OFF)//关闭springboot 图标
.web(WebApplicationType.NONE)//不作为web服务启动
.run(args);//运行 //java SPI加载服务
ServiceLoader<AssembleCar> services = ServiceLoader.load(AssembleCar.class);
for (AssembleCar d:services){
d.processingStep(); }
}
}
运行结果:

1.3 java SPI 的不足
2. Dubbo 框架下的SPI
dubbo学习之路-SPI机制的更多相关文章
- 一文搞懂Java/Spring/Dubbo框架中的SPI机制
几天前和一位前辈聊起了Spring技术,大佬突然说了SPI,作为一个熟练使用Spring的民工,心中一紧,咱也不敢说不懂,而是在聊完之后赶紧打开了浏览器,开始的学习之路,所以也就有了这篇文章.废话不多 ...
- Dubbo(二):深入理解Dubbo的服务发现SPI机制
一.前言 用到微服务就不得不来谈谈服务发现的话题.通俗的来说,就是在提供服务方把服务注册到注册中心,并且告诉服务消费方现在已经存在了这个服务.那么里面的细节到底是怎么通过代码实现的呢,现在我们来看看D ...
- Dubbo 源码分析 - SPI 机制
1.简介 SPI 全称为 Service Provider Interface,是 Java 提供的一种服务发现机制.SPI 的本质是将接口实现类的全限定名配置在文件中,并由服务加载器读取配置文件,加 ...
- Android开发学习之路-回调机制学习笔记
不知道是我学Java的时候没有认真听还是怎么的,曾经一直不知道什么是“回调”,它有什么用,百度一大堆,都太复杂看不明白(好吧是我笨),所以想把自己理解的分享给其他看到的人,大家都真正认识一下这个重要的 ...
- MSP430F149学习之路——SPI
代码一: //****************************************************************************** //Description: ...
- Dubbo学习(六) dubbo 架构图 以及调用过程
一.Dubbo结构图 duubo结构图 我们解释以下这个架构图:Consumer服务消费者,Provider服务提供者.Container服务容器.消费当然是invoke提供者了,invoke这条 ...
- Dubbo学习(一) Dubbo原理浅析
一.初入Dubbo Dubbo学习文档: http://dubbo.incubator.apache.org/books/dubbo-user-book/ http://dubbo.incubator ...
- Java SPI机制简介
SPI 简介 SPI 全称为 (Service Provider Interface) ,是JDK内置的一种服务提供发现机制. 目前有不少框架用它来做服务的扩展发现, 简单来说,它就是一种动态替换发现 ...
- 聊聊Java SPI机制
一.Java SPI机制 SPI(Service Provider Interface)是JDK内置的服务发现机制,用在不同模块间通过接口调用服务,避免对具体服务服务接口具体实现类的耦合.比如JDBC ...
随机推荐
- [PWA] Storage information for PWA application
Be careful with the storage use cases, free the storage when it is necessary.
- vue的操作:使用手机访问电脑的页面做法如下:
安装好node.js 和 npm 后,配置好路由,且可以在电脑中正常访问页面时, 只要修改我的项目:my-project 下面的config--->index.js--->里面的 host ...
- 如何防止CSRF攻击?
CSRF攻击 CSRF漏洞的发生 相比XSS,CSRF的名气似乎并不是那么大,很多人都认为CSRF“不那么有破坏性”.真的是这样吗? 接下来有请小明出场~~ 小明的悲惨遭遇 这一天,小明同学百无聊赖地 ...
- 【Codeforces】CF367D Sereja and Sets (数学)
题目大意 1到n这n个正整数被分成了m个不相交的集合(集合不一定连续),现在从这m个集合中选出最少个数的集合,满足对于[1,n]中任意一个长度为d的区间都至少有一个数字出现在已选集合中.(1 < ...
- 将爬取的实习僧网站数据传入HDFS
一.引言: 作为一名大三的学生,找实习对于我们而言是迫在眉睫的.实习作为迈入工作的第一步,它的重要性不言而喻,一份好的实习很大程度上决定了我们以后的职业规划. 那么,一份好的实习应该考量哪些因素呢? ...
- java.net.MalformedURLException: unknown protocol: 异常
开门见山的说,第一个参数u,赋的值是 "D://123.txt",于是乎,报错了,java.net.MalformedURLException: unknown protocol: ...
- jq select change下拉框选项变化判断选中值,添加(attr)或移除(removeAttr)一个或多个属性
select change下拉框选项变化判断选中值,添加(attr)或移除(removeAttr)一个或多个属性 $("#IsRecommend").change(function ...
- Android: VIVO手机setSpeakerphoneOn p无效,无法切换speaker的问题
setSpeakerphoneOn 方法可以使语音和通话能够强制从手机的扬声器输出,不过在测试了众多手机在调用了这个API之后都可以,唯独有一款VIVO手机不可以: .小米6X(9.0) .Samsu ...
- gmake: Nothing to be done for `all'.
安装gc_buffercache的时候报错: [root@~ pg_buffercache]# gmake gmake: Nothing to be done for `all'. 解决方法: > ...
- bat脚本的基本命令语法
bat脚本的基本命令语法 一.批处理的常见命令 1.REM 和 :: 2.ECHO 和 @ 3.PAUSE 4.ERRORLEVEL 5.TITLE 6.COL ...