| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> java SPI机制实现服务接口和服务实现分离 -> 正文阅读 |
|
[Java知识库]java SPI机制实现服务接口和服务实现分离 |
SPI(Service Provider Interface) 是Java提供的一套用来被第三方实现或者扩展的API,它可以用来启用框架扩展和替换组件。 java中实现spi的主要类为 ServiceLoader<S>,一个简单的服务提供商加载工具。 一个服务是一组众所周知的接口(通常是抽象的)类。服务提供商是服务的具体实现。提供者中的类通常实现接口并对服务本身定义的类进行子类化。服务提供商可以以Java扩展的形式安装在Java平台的实现中,也就是将jar文件放置到任何通常的扩展目录中。提供商也可以通过将它们添加到应用程序的类路径或某些其他平台特定的方式来提供。 1. java spi的实现原理java 中通过实现接口,通过基于接口的编程模式,将服务规范与服务提供相分离,实现不同的厂商提供服务。比如在支付平台中,需要集成多个银行及第三方支付渠道,这时就可以定义统一的支付接口,根据不同的支付渠道,提供不同的支付服务实现。 要使用Java SPI,需要遵循如下约定: (1)当服务提供者提供了接口的具体实现后,在jar包的META-INF/services目录下创建一个以“接口全限定名”为命名的文件,内容为实现类的全限定名; (2)引入接口实现类所在的jar包; (3)主程序通过java.util.ServiceLoder<S>动态装载实现模块,它通过扫描META-INF/services目录下的配置文件找到实现类的全限定名,把类加载到JVM; (4)SPI的实现类必须携带一个不带参数的构造方法; 2. 代码实现代码实现包括接口定义,接口实现,接口配置以及调用示例。 2.1 接口定义
定义一个数据操作接口。 2.2 Mysql实现
2.3 Oracle实现
2.4 服务配置在resources目录下新建META-INF/services目录,并且在这个目录下新建一个与上述接口的全限定名一致的文件"com.platform.service.IDataOperator",在这个文件中写入接口的实现类的全限定名。
2.5?服务调用
执行测试,输出如下:
以上输出说明加载了接口的实现服务,并且调用了服务的实现方法。 3. SPI技术的优势总结下spi能带来的好处:
Demo源码下载地址: |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 6:47:40- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |