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正在绘制圆形

代码结构图如下

JAVA SPI特性及简单应用代码实例

6、实际应用,sum为各大数据厂商提供了java.sql.Driver接口,每个厂商提供自己的实现。

JAVA SPI特性及简单应用代码实例

JAVA SPI特性及简单应用代码实例

来源:https://www.cnblogs.com/zhi-leaf/p/10467894.html

标签:JAVA,SPI,特性,应用
0
投稿

猜你喜欢

  • 详解Android Flutter中SliverAppBar的使用教程

    2023-06-23 12:11:27
  • 分享Java常用开发编辑器工具

    2023-11-06 07:35:37
  • Spring 报错:元素 "context:component-scan" 的前缀 "context" 未绑定的问题解决

    2023-09-10 07:45:34
  • Flutter本地存储之基本的键值对存储详解

    2023-08-18 03:52:35
  • 解决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
  • 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
  • 基于Tomcat7、Java、WebSocket的服务器推送聊天室实例

    2023-11-25 23:35:34
  • 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
  • SSM如何实现在Controller中添加事务管理

    2023-11-29 07:23:18
  • Springboot导出文件,前端下载文件方式

    2023-07-21 11:27:05
  • Java线程编程中isAlive()和join()的使用详解

    2023-10-29 18:08:07
  • asp之家 软件编程 m.aspxhome.com