前言
在翻看一些框架代码的时候,能看到一些框架处理时对于类的实例化并没有直接new一个对象,而是采用了SPI机制,为了便于看源码,也为了以后对自己写代码进行优化,因此需要学习一下
SPI
SPI全称Service Provider Interface,翻译过来是服务提供接口。它是jdk内置的一种服务发现机制,它可以让服务定义与实现分离、解耦,能够提高程序的扩展性
Java SPI 实际上是“基于接口的编程+策略模式+配置文件”组合实现的动态加载机制,提供了通过interface寻找implement的方法
SPI的使用还算简单
1.先定义一个接口
public interface SpiTest {
void someTest();
}
2.在/resources/META-INF/services目录下以接口的全路径创建一个文件
3.定义一个SpiTest接口的实现类
public class SpiTestImpl implements SpiTest {
public SpiTestImpl() {
System.out.println("I'm initialized!");
}
@Override
public void someTest() {
System.out.println("I'm SPI test, I'm ok!");