浅谈Java的SPI技术
人狠话不多,先上截图和代码吧。
这是工程目录。看到resources目录下面没有,添加了META-INF和services目录。
添加了一个com.gys.test.IAnimal文件。这个文件名和上面的接口名完全对应。这个目录的文件名是有讲究的,按照SPI规范来的。
上代码:
package com.gys.test; public interface IAnimal { void eat(); }
package com.gys.test.impl; import com.gys.test.IAnimal; public class Bird implements IAnimal { @Override public void eat() { System.out.println("小鸟吃虫子"); } }
package com.gys.test.impl; import com.gys.test.IAnimal; public class Dog implements IAnimal { @Override public void eat() { //System.out.println("小狗吃屎"); System.out.println("小狗吃骨头"); } }
package com.gys.test; import java.util.ServiceLoader; public class MainTest { public static void main(String[] args) { ServiceLoader<IAnimal> animals=ServiceLoader.load(IAnimal.class); for (IAnimal animal:animals){ animal.eat(); } } }
源码一角说明META-INF/service:
ServiceLoader.load(clsss)就是去ClassPath的MEAT-INF的service下去寻找指定文件;这里的classPath包括外部引入的jar包中的classPath.
如果我们引入了第三方的jar包,如果jar中的META-INF/service有com.gys.test.IAnimal文件,也会被读取,并且实例化里面的类。
SPI使用场景:
自己提供接口让别人提供实现的方式;典型的如JDBC模式。
以上就是浅谈Java的SPI技术的详细内容,更多关于JAVA SPI技术的资料请关注脚本之家其它相关文章!
- Java和Dubbo的SPI机制原理解析
- Java 自旋锁(spinlock)相关知识总结
- 深入理解Java中的SPI机制
- Java中SPI的一些理解
- 在java中使用SPI创建可扩展的应用程序操作
- java中spi使用详解
- Java 添加、删除、替换、格式化Word中的文本的步骤详解(基于Spire.Cloud.SDK for Java)
- Java 添加、删除、格式化Word中的图片步骤详解( 基于Spire.Cloud.SDK for Java )
- Java 基于Spire.Cloud.SDK for Java在PDF中绘制形状
- 详解java实践SPI机制及浅析源码
- Java SPI的简单小实例
- Java SPI机制原理及代码实例
- 详解JAVA SPI机制和使用方法
- Java基于Spire Cloud Excel把Excel转换成PDF
- JAVA SPI特性及简单应用代码实例
- 深入学习Java中的SPI机制
- Java进阶之SPI机制详解
相关文章
Java中@DS+@Transactional注解切换数据源失效解决方案
本文主要介绍了@DS+@Transactional注解切换数据源失效解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2023-06-06Java利用文件输入输出流实现文件夹内所有文件拷贝到另一个文件夹
这篇文章主要介绍了Java实现文件夹内所有文件拷贝到另一个文件夹,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2018-03-03mybatis-4 mybatis与spring结合使用及原理解析
本文通过图文并茂的形式给大家介绍了mybatis-4 mybatis与spring结合使用及原理解析,非常不错,具有一定的参考借鉴价值 ,需要的朋友可以参考下2019-04-04
最新评论