最新文章列表

关于 dubbo 的 SpiExtensionFactory 的一点说明

关于 dubbo 的 SpiExtensionFactory 的一点说明: 本篇文章不想比较 dubbo 的 spi 和 jdk spi 的异同,网上有太多文章写了这块,本篇文章主要想说 dubbo @Adaptive 注 ...
一剪梅 评论(0) 有631人浏览 2019-08-29 00:30

java spi 学习记录

SPI 说明: SPI 全称为 (Service Provider Interface) ,是JDK内置的一种服务提供发现机制。 目前有不少框架用它来做服务的扩展发现, 简单来说,它就是一种动态替换发现的机制, 举个例子来说, 有个接口,想运行时动态的给它添加实现,你只需要添加一个实现【可不是说程序跑起来你换个jar就会动态选择实现类】。 主要用途:模块之前完全解耦合【比如服务定义A  服务实现A1 ...
spi 
pengjianf_ah 评论(0) 有1822人浏览 2018-10-12 16:18

Dubbo之扩展点ExtensionLoader

一、扩展点简介     Dubbo 的扩展点加载从 JDK 标准的 SPI (Service Provider Interface) 扩展点发现机制加强而来。        Dubbo 改进了 JDK 标准的 SPI 的以下问题: JDK 标准的 SPI 会一次性实例化扩展点所有实现,如果有扩展实现初始化很耗时,但如果没用上也加载,会很浪费资源。 如果扩展点加载失败,连扩展点的名称都拿不到了 ...
ncs123 评论(0) 有853人浏览 2018-06-05 15:38

从dubbo到 jdbc 与 spi

最近在看Dubbo源码,dubbo的功能是基于扩展点(Extension)的,如果想要修改哪个模块,可以很方便的进行扩展替换。 这种扩展点就是借鉴的spi的思想,但是dubbo并没有使用jdk原生的serviceLoader,而是自己实现了ExtensionLoader来加载扩展点,支持键值对,更为灵活,遵循的规范基本相同。这是题外话。   什么是SPI?SPI能干什么?这里有篇介绍文章- ...
千年松鼠 评论(0) 有1665人浏览 2018-02-01 15:44

Spi扩展加载机制

   一、概述        我们都知道 Java的SPI机制:(service provider interface ) 对于该机制的详情概述请自行百度。其实Spi简单的是提供给服务提供商的开发者使用和扩展的(其实是接口编程+策略模式+配置文件的一种方式)。        场景:假如一个一个jar包中的一个接口A 分别有三个A接口的实现:B、C、D,我们在其他地方使用到了接口A的实现的时 ...
qq466862016 评论(0) 有1156人浏览 2017-10-31 23:26

架构设计-java spi实现模块间的松耦合

 一。前言        在面向的对象的设计里,一般推荐模块之间基于接口编程,模块之间不对实现类进行硬编码。一旦代码里涉及具体的实现类,就违 ...
jxauwxj 评论(0) 有2829人浏览 2017-01-06 23:02

Java和dubbo中的SPI机制学习

  关于java的SPI机制,可以参考:https://docs.oracle.com/javase/tutorial/sound/SPI-intro.html   为了实现在模块装配时的时候不在程序中动态指明,需要提供一种服务发现机制,为某个接口寻找服务实现的机制,就是将装配的控制权转移到程序之外,在模块化设计中这个机制尤其重要。   Java SPI(Service Prov ...
brandNewUser 评论(0) 有1694人浏览 2016-10-18 16:32

Java SPI机制简介

Java SPI机制简介            SPI是Service Provider Interfaces的简称。根据Java的SPI规范,我们可以定义一个服务接口,具体的实现由对应的实现者去提供,即Service Provider(服务提供者)。然后在使用的时候只要根据SPI的规范去获取对应的服务提供者的服务实现即可。为了便于理解,我们先来看一个使用SPI的示例。          ...
234390216 评论(0) 有12553人浏览 2016-10-09 10:37

Java SPI机制

1. 概述 SPI为Service Provider Interface的缩写。为扩展框架的开发者使用。在Java的世界,有java.sql.Driver,commons-logging等使用。 2. 约定 在META/services目录中创建以接口权限定名为文件名,以具体实现类的权限定为内容 SPI 的实现类需要放在classpath 中 API 的实现类需要不带参数的构造函数 ...
spi 
TRAMP_ZZY 评论(0) 有850人浏览 2016-07-11 15:23

SPI入门级Demo(五:服务消费者)

前面已经定义好了服务的契约接口以及服务的实现者(加法服务、乘法服务), 本文将开发一个服务消费者,所谓的消费者即消费服务,通过引入相应服务的jar包来自动消费相应的服务。   首先同样新建一个Java工程spi-consumer, 新建服务消费类com.fanyc.test.spi.consumer.Consumer,并添加可执行的main方法。 由于是服务消费者,必须要知道要消费的服 ...
Fanyucai 评论(0) 有954人浏览 2015-04-15 22:56

SPI入门级Demo(四:服务实现者-乘法服务)

本文将实现依据契约接口完成乘法法服务的实现。   做法跟前一篇 SPI入门级Demo(三:服务实现者-加法服务) 相同,直接贴出代码 PS:至于减法和除法可自行实现   package com.fanyc.test.spi.provider; import com.fanyc.test.spi.intface.Computer; /** * 服务实现者:乘法运算 * ...
Fanyucai 评论(0) 有838人浏览 2015-04-15 22:29

SPI入门级Demo(三:服务实现者-加法服务)

本文将实现依据契约接口完成加法服务的实现。   服务的实现是需要依赖契约接口的定义的,所以需要引入接口定义jar包。   新建Java工程spi-provider-add,引入spi-intface.jar。 新建com.fanyc.test.spi.provider.Add类,实现com.fanyc.test.spi.intface.Computer接口, 实现体中完成了的a和b的 ...
Fanyucai 评论(0) 有992人浏览 2015-04-15 22:18

SPI入门级Demo(二:契约即接口定义)

本文将介绍SPI中最重要的契约即接口定义。新建Java工程spi-intface,然后新建一个接口类,如下所示: package com.fanyc.test.spi.intface; /** * 定义契约类 * * @author Fanyc * */ public interface Computer { /** * 定义计算方法 * ...
Fanyucai 评论(0) 有887人浏览 2015-04-15 22:02

SPI入门级Demo(一:初识)

最近在学习软件架构以及SOA等相关知识,在学习Dubbo的时候发现SPI这个东东,就上网百度来学习一下。   SPI的全名为Service Provider Interface。   我理解的SPI就是调用者只要说明调用什么接口的什么方法即可,无需知道具体的 实现者代码,也无需在代码中实现进行关联引用。这样就将调用方和实现方进行分离, 只要共通遵循接口协议就可以了。   具体SP ...
Fanyucai 评论(0) 有1060人浏览 2015-03-13 15:08

再谈SPI云计算三层模式之间的关系(转)

转自:http://cloud.chinabyte.com/192/12124192.shtml   首先对于IaaS层,可以考虑将其再分为两个层次,一个是虚拟化,一个是云调度。虚拟化包括了计算能力的虚拟化,存储能力虚拟化和网络能力的虚拟化;云调度包括了应用虚拟化,动态资源调度,自动部署,调度策略配置等关键内容。要注意IaaS层的核心是按需提供计算资源和存储资源,既然按需提供那么资源一定能够动 ...
javafine 评论(0) 有855人浏览 2014-12-09 18:01

DUBBO的 SPI 方式思考

         Java 的SPI方式可以动态的加载扩展类,但是用法不是很灵活,DUBBO框架因为存在多个扩展点所以实现了自定义的一种扩展方式,也就是实现了作者提到的微核心,插件式的思路。 比如,需要扩展Dubbo的协议,只需在xxx.jar中放置: 文件:META-INF/services/com.alibaba.dubbo.rpc.Protocol 内容为:com.alibaba.xx ...
小码哥BASE64 评论(0) 有1650人浏览 2014-04-22 13:48

java SPI机制(转)

From ServiceLoader javadoc: A service is a well-known set of interfaces and classes. A service provider is a specific implementation of a service. The classes in a provider typically implement the int ...
jackiee_cn 评论(0) 有736人浏览 2013-12-18 08:03

JDK的SPI(Service Provider Interface)实践

     一个服务(service)通常指的是已知的接口或者抽象类,服务提供方就是对这个接口或者抽象类的实现,然后按spi标准存放到资源路径META-INF/services目录下,文件的命名为该服务接口的全限定名。如有一个服务接口com.test.Service,其服务实现类为com.test.ChildService,那此时需要在META-INF/services中放置文件com.test.S ...
SPI 
lwj0212 评论(0) 有4283人浏览 2013-08-06 18:57

Service Provider Iterface (SPI) 和 sun.misc.Service

温故而知新,一年前写过一篇此内容的文章,貌似已经遗失。 一个服务(service)通常指的是已知的接口或者抽象类,服务提供方就是对这个接口或者抽象类的实现,然后按spi标准存放到资源路径META-INF/services目录下,文件的命名为该服务接口的全限定名。 如果一个接口com.github.yingzhuo.api.SomeService其实现类为com.github.yingzhuo.s ...
yingzhor 评论(0) 有1813人浏览 2013-08-01 11:01

最近博客热门TAG

Java(141744) C(73651) C++(68608) SQL(64571) C#(59609) XML(59133) HTML(59043) JavaScript(54919) .net(54785) Web(54514) 工作(54118) Linux(50905) Oracle(49875) 应用服务器(43289) Spring(40812) 编程(39454) Windows(39381) JSP(37542) MySQL(37267) 数据结构(36424)

博客人气排行榜

    博客电子书下载排行

      >>浏览更多下载

      相关资讯

      相关讨论

      Global site tag (gtag.js) - Google Analytics