这期内容当中小编将会给大家带来有关Java SPI机制的示例分析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:域名与空间、网页空间、营销软件、网站建设、招远网站维护、网站推广。
MySQL-connector
JDK中的nio SPI
再如,logback-classic
接下来,我们就来聊聊java SPI机制
一、SPI概念和规范
1.1 SPI概念
1.2 SPI规范
需要设置/META-INF/目录
/META-INF/services
放到classpath下
/META-INF/services/目录下放置配置文件
文件名是接口全路径名
文件内部是要实现的接口实现类
文件编码为UTF-8
使用ServiceLoad的load方法
二、SPI示例
编写一个GreetingService接口
package com.wangmengjun.tutorial.spi;
public interface GreetingService {
void sayHello();
}
编写2个实现类,分别输出英文和中文
package com.wangmengjun.tutorial.spi.impl;
import com.wangmengjun.tutorial.spi.GreetingService;
public class EnglishGreetingServiceImpl implements GreetingService{
public void sayHello() {
System.out.println("Hello , This is SPI");
}
}
package com.wangmengjun.tutorial.spi.impl;
import com.wangmengjun.tutorial.spi.GreetingService;
public class ChineseGreetingServiceImpl implements GreetingService {
public void sayHello() {
System.out.println("你好,这是SPI");
}
}
创建META-INF文件目录并设置实现类
使用ServiceLoader
package com.wangmengjun.tutorial.spi;
import java.util.Iterator;
import java.util.ServiceLoader;
public class SpiMain {
public static void main(String[] args) {
ServiceLoader<GreetingService> loader= ServiceLoader.load(GreetingService.class);
Iterator<GreetingService> greetingIter = loader.iterator();
while(greetingIter.hasNext()) {
GreetingService service= greetingIter.next();
System.out.println(service.getClass().getName());
service.sayHello();
}
}
}
输出:
com.wangmengjun.tutorial.spi.impl.EnglishGreetingServiceImplHello , This is SPIcom.wangmengjun.tutorial.spi.impl.ChineseGreetingServiceImpl你好,这是SPI
经过上述几个步骤,一个spi的简单示例就完成了。
// The lazy-lookup iterator for iterator operations private Iterator<Provider<S>> lookupIterator1; private final List<S> instantiatedProviders = new ArrayList<>();
上述就是小编为大家分享的Java SPI机制的示例分析了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注创新互联行业资讯频道。
网站名称:JavaSPI机制的示例分析
标题来源:https://www.cdcxhl.com/article8/jhdiip.html
成都网站建设公司_创新互联,为您提供网页设计公司、网站维护、网站导航、企业建站、外贸建站、移动网站建设
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联