Dubbo SPI的加载机制
SPI全称为Service Provider Interface,是一种服务发现机制。SPI 的本质是将接口实现类的全限定名配置在文件中,并由服务加载器读取配置文件,加载实现类。
SPI示例
Java SPI示例
- Robot
public interface Robot {
void sayHello();
}
- RobotImpl
public class Bumblebee implements Robot {
@Override
public void sayHello() {
System.out.println("Hello, I am Bumblebee.");
}
}
public class OptimusPrime implements Robot {
@Override
public void sayHello() {
System.out.println("Hello, I am Optimus Prime.");
}
}
- MATA/service
com.agmtopy.testcontainers.completableFuture.impl.Bumblebee
com.agmtopy.testcontainers.completableFuture.impl.OptimusPrime
- JavaSpiTest
@Test
public void test0(){
ServiceLoader<Robot> robots = ServiceLoader.load(Robot.class);
robots.forEach(Robot::sayHello);
}
Dubbo SPI示例
- Robot
@SPI
public interface Robot {
void sayHello();
}
- MATA/dubbo
optimusPrime = com.agmtopy.testcontainers.completableFuture.impl.Bumblebee
bumblebee = com.agmtopy.testcontainers.completableFuture.impl.OptimusPrime