Jdbc - SPI Driver
详见 java.sql.Driver;java.sql.DriverManager;
SPI demo
// the driver interface
public interface MyDriver {
String format();
String who();
}
// the driver of my impl
public class TheDriver implements MyDriver{
@Override
public String format() {
return "mydriver://realcpf";
}
@Override
public String who() {
return "realcpf";
}
}
// SPI config file
// src\main\resources\META-INF\services\tech.realcpf.jdbc.MyDriver -> tech.realcpf.jdbc.TheDriver
加载方式
class MyDriverManager {
private volatile boolean initFlag = false;
public void init() {
if (initFlag) {
return;
}
ServiceLoader<MyDriver> serviceLoader = ServiceLoader.load(MyDriver.class);
Iterator<MyDriver> driverIterator = serviceLoader.iterator();
while (driverIterator.hasNext()) {
MyDriver driver = driverIterator.next();
System.out.println(driver.who() + ":" + driver.format());
}
}
}