本月博客排行
-
第1名
龙儿筝 -
第2名
johnsmith9th -
第3名
wy_19921005 - zysnba
- sgqt
- lemonhandsome
年度博客排行
-
第1名
宏天软件 -
第2名
青否云后端云 -
第3名
龙儿筝 - gashero
- wallimn
- vipbooks
- benladeng5225
- wy_19921005
- fantaxy025025
- e_e
- zysnba
- ssydxa219
- sam123456gz
- javashop
- arpenker
- tanling8334
- kaizi1992
- xpenxpen
- wiseboyloves
- xiangjie88
- ranbuijj
- ganxueyun
- sichunli_030
- xyuma
- wangchen.ily
- jh108020
- lemonhandsome
- zxq_2017
- jbosscn
- Xeden
- luxurioust
- lzyfn123
- johnsmith9th
- zhanjia
- forestqqqq
- nychen2000
- ajinn
- wjianwei666
- hanbaohong
- daizj
- 喧嚣求静
- silverend
- mwhgJava
- kingwell.leng
- lchb139128
- lich0079
- kristy_yy
- jveqi
- java-007
- sunj
最新文章列表
Java SPI机制简介
Java SPI机制简介
SPI是Service Provider Interfaces的简称。根据Java的SPI规范,我们可以定义一个服务接口,具体的实现由对应的实现者去提供,即Service Provider(服务提供者)。然后在使用的时候只要根据SPI的规范去获取对应的服务提供者的服务实现即可。为了便于理解,我们先来看一个使用SPI的示例。
...
ServiceLoader服务提供者加载设施帮助类
ServiceLoader是jdk提供的一个简单的服务提供者加载设施,一个服务(接口)的实现者在其资源目录META-INF/services 中放置提供者配置文件 来标识服务提供者。
文件名称是服务类型的完全限定名称。该文件包含一个具体提供者类的完全限定名称列表,每行一个。
通过ServiceLoader.load创建服务实现者加载器,通过iterator以延迟方式加载此加载器服务的可用提供者 ...
SPI入门级Demo(五:服务消费者)
前面已经定义好了服务的契约接口以及服务的实现者(加法服务、乘法服务),
本文将开发一个服务消费者,所谓的消费者即消费服务,通过引入相应服务的jar包来自动消费相应的服务。
首先同样新建一个Java工程spi-consumer,
新建服务消费类com.fanyc.test.spi.consumer.Consumer,并添加可执行的main方法。
由于是服务消费者,必须要知道要消费的服 ...
SPI入门级Demo(四:服务实现者-乘法服务)
本文将实现依据契约接口完成乘法法服务的实现。
做法跟前一篇 SPI入门级Demo(三:服务实现者-加法服务) 相同,直接贴出代码
PS:至于减法和除法可自行实现
package com.fanyc.test.spi.provider;
import com.fanyc.test.spi.intface.Computer;
/**
* 服务实现者:乘法运算
* ...
SPI入门级Demo(三:服务实现者-加法服务)
本文将实现依据契约接口完成加法服务的实现。
服务的实现是需要依赖契约接口的定义的,所以需要引入接口定义jar包。
新建Java工程spi-provider-add,引入spi-intface.jar。
新建com.fanyc.test.spi.provider.Add类,实现com.fanyc.test.spi.intface.Computer接口,
实现体中完成了的a和b的 ...
SPI入门级Demo(二:契约即接口定义)
本文将介绍SPI中最重要的契约即接口定义。新建Java工程spi-intface,然后新建一个接口类,如下所示:
package com.fanyc.test.spi.intface;
/**
* 定义契约类
*
* @author Fanyc
*
*/
public interface Computer {
/**
* 定义计算方法
*
...
SPI入门级Demo(一:初识)
最近在学习软件架构以及SOA等相关知识,在学习Dubbo的时候发现SPI这个东东,就上网百度来学习一下。
SPI的全名为Service Provider Interface。
我理解的SPI就是调用者只要说明调用什么接口的什么方法即可,无需知道具体的
实现者代码,也无需在代码中实现进行关联引用。这样就将调用方和实现方进行分离,
只要共通遵循接口协议就可以了。
具体SP ...
ServiceLoader的使用
发现ServiceLoader是个类似spring的东西,可以指定接口和实现,通过ServiceLoader去载入。
下面是我的一个例子:
package com.test2;
import java.util.ServiceLoader;
import com.test.IHello;
public class Main {
public static void main ...
java spi机制
SPI的全名为Serivce Provider Interface。普通的开发人员可能不太了解,这个针对厂商或者插件开发的。在java.util.ServiceLoader的文档里面有比较详细的介绍。它的主要思想和callback差不多。‘Callback’的思想是在我们调用API的时候,我们可以自己写一段逻辑代码传入到API中,API内部在合适的时候会调用它,从而实现某种程度的“定制”。
...