JAVA SPI特性及简单应用代码实例
作者:玄同太子 时间:2021-11-11 14:54:54
最近在研究dubbo时,发现了JAVA的SPI特性。SPI的全名为Service Provider Interface,是JDK内置的一种服务发现机制。
具体实现:
1、定义一个接口
public interface IShape {
/**
* 渲染
*/
void render();
}
2、添加几种实现
public class CircularShape implements IShape {
@Override
public void render() {
System.out.println(this.getClass().getName() + "正在绘制圆形");
}
}
public class SquareShape implements IShape {
@Override
public void render() {
System.out.println(this.getClass().getName() + "正在绘制正方形");
}
}
3、在META-INF/services/com.zhi.demo.IShape文件添加信息
com.zhi.demo.impl.SquareShape
com.zhi.demo.impl.CircularShape
4、测试
public class SpiTest {
public static void main(String[] args) {
ServiceLoader<IShape> loaders = ServiceLoader.load(IShape.class);
for (IShape shape : loaders) {
shape.render();
}
}
}
5、运行结果
com.zhi.demo.impl.SquareShape正在绘制正方形
com.zhi.demo.impl.CircularShape正在绘制圆形
代码结构图如下
6、实际应用,sum为各大数据厂商提供了java.sql.Driver接口,每个厂商提供自己的实现。
来源:https://www.cnblogs.com/zhi-leaf/p/10467894.html
标签:JAVA,SPI,特性,应用
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
详解Android Flutter中SliverAppBar的使用教程
2023-06-23 12:11:27
![](https://img.aspxhome.com/file/2023/7/97867_0s.jpg)
分享Java常用开发编辑器工具
2023-11-06 07:35:37
![](https://img.aspxhome.com/file/2023/6/58896_0s.png)
Spring 报错:元素 "context:component-scan" 的前缀 "context" 未绑定的问题解决
2023-09-10 07:45:34
Flutter本地存储之基本的键值对存储详解
2023-08-18 03:52:35
![](https://img.aspxhome.com/file/2023/0/83520_0s.png)
解决Spring Cloud feign GET请求无法用实体传参的问题
2023-11-17 14:14:05
SpringCloud Finchley+Spring Boot 2.0 集成Consul的方法示例(1.2版本)
2023-09-02 13:07:36
![](https://img.aspxhome.com/file/2023/9/58329_0s.png)
Spring Boot 项目发布到 Tomcat 服务器的操作步骤
2023-10-28 09:39:05
Java编程将汉字转Unicode码代码示例
2023-11-09 17:33:39
详谈java中File类getPath()、getAbsolutePath()、getCanonical的区别
2022-08-18 19:21:44
SpringBoot请求处理之常用参数注解介绍与源码分析
2023-11-10 10:38:12
![](https://img.aspxhome.com/file/2023/8/59248_0s.png)
基于Tomcat7、Java、WebSocket的服务器推送聊天室实例
2023-11-25 23:35:34
![](https://img.aspxhome.com/file/2023/0/60390_0s.jpg)
Java的枚举类型使用方法详解
2023-11-19 04:32:55
如何将javaweb项目部署到linux下
2023-11-11 11:45:11
Android TextView跑马灯效果实现方法
2023-09-27 04:16:09
Java基础学习之ArrayList类概述与常用方法
2023-03-13 02:15:24
解决logback-classic 使用testCompile的打包问题
2021-07-01 08:16:50
使用Spring自定义实现IOC和依赖注入(注解方式)
2023-09-16 04:42:35
![](https://img.aspxhome.com/file/2023/4/58534_0s.png)
SSM如何实现在Controller中添加事务管理
2023-11-29 07:23:18
Springboot导出文件,前端下载文件方式
2023-07-21 11:27:05
![](https://img.aspxhome.com/file/2023/4/60774_0s.jpg)
Java线程编程中isAlive()和join()的使用详解
2023-10-29 18:08:07