
SPI 全称 Service Provider Interface,是JDK内置的一种服务提供发现机制。它是一种动态替换发现的机制。目前有不少框架用它DUBBO,common-loggin,JDBC等等
1. 简单Demo
1. 目录结构

2. 具体实现
package org.chasel.spi;
public interface HelloInterface {
void sayHello();
}
package org.chasel.spi.impl;
import org.chasel.spi.HelloInterface;
public class ImageHello implements HelloInterface {
public void sayHello() {
System.out.println("Image hello");
}
}
package org.chasel.spi.impl;
import org.chasel.spi.HelloInterface;
public class TextHello implements HelloInterface {
public void sayHello() {
System.out.println("Text Hello");
}
}
package org.chasel.spi;
import java.util.ServiceLoader;
public class SPIMain {
public static void main(String[] args) {
ServiceLoader<HelloInterface> loaders = ServiceLoader.load(HelloInterface.class);
for (HelloInterface in : loaders) {
in.sayHello();
}
}
}
# org.chasel.spi.HelloInterface
# 注意 文件名称
org.chasel.spi.impl.ImageHello
org.chasel.spi.impl.TextHello
package org.chasel.spi;
import java.util.ServiceLoader;
public class SPIMain {
public static void main(String[] args) {
ServiceLoader<HelloInterface> loaders = ServiceLoader.load(HelloInterface.class);
for (HelloInterface in : loaders) {
in.sayHello();
}
}
}