Dubbo SPI的加载机制


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

  TOC