澳门足球盘

同乐城娱乐登录平台外围提现规则

1.什么是java的spi

SPI 全称为 (Service Provider Interface) ,是JDK内置的一种服务提供发现机制。 目前有不少框架用它来做服务的扩展发现, 简单来说,它就是一种动态替换发现的机制, 举个例子来说, 有个接口,想运行时动态的给它添加实现,你只需要添加一个实现。

具体是在JAR包的"src/META-INF/services/"目录下建立一个文件,文件名是接口的全限定名,文件的内容可以有多行,每行都是该接口对应的具体实现类的全限定名.

2.运用场景

比如你想扩展一些框架,如spring的一些功能,就是要实现它接口,然后自己配置了。

3.例子代码

先定义接口:

package com.ming.spi.service;/** * 定义一个dog的接口 * @author ming * */public interface DogService { void sleep();}

然后定义两个实现:

package com.ming.spi.service.imp;import com.ming.spi.service.DogService;public class BlackDogServiceImpl implements DogService{ @Override public void sleep() { System.out.println("黑色dog。。。汪汪叫,不睡觉..."); } }

package com.ming.spi.service.imp;import com.ming.spi.service.DogService;public class WhilteDogServiceImpl implements DogService{ @Override public void sleep() { System.out.println("白色dog。。。呼呼大睡觉..."); }}

最后是一个测试代码:

package com.ming.spi.service;import java.util.ServiceLoader;public class Test { public static void main(String[] args) throws Exception { ServiceLoader<DogService> loaders = ServiceLoader.load(DogService.class); for (DogService d : loaders) { d.sleep(); } }}

然后是src/META-INF/services/com.ming.spi.service.DogService文件中的代码:

com.ming.spi.service.imp.BlackDogServiceImplcom.ming.spi.service.imp.WhilteDogServiceImpl

最后运行结果就是你需要的两个实现。

最后总结一下:

java的spi运行流程是运用java.util.ServiceLoader这个类的load方法去在src/META-INF/services/寻找对应的全路径接口名称的文件,然后在文件中找到对应的实现方法并注入实现,然后你可以运用了

参考:https://www.cnblogs.com/zhongkaiuu/articles/5040971.html

用得越多不知道的东西越多......慢慢酱油中...

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。

https://www.pick2012.cn/style/images/nopic.gif
我要收藏
个赞
被踩
分享到
分享
评论
首页