JDK SPI
JDK 标准的 SPI 会一次性加载所有的扩展实现,如果有的扩展吃实话很耗时,但也没用 上, 很浪费资源。 所以只希望加载某个的实现, 就不现实了
ServiceLoader<ISayHello> serviceLoader=ServiceLoader.load(ISayHello.class);
System.out.println("Java SPI");
serviceLoader.forEach(ISayHello::say);
DUBBO SPI
1、对 Dubbo 进行扩展, 不需要改动 Dubbo 的源码
2、 延迟加载, 可以一次只加载自己想要加载的扩展实现。
3、 增加了对扩展点 IOC 和 AOP 的支持, 一个扩展点可以直接 setter 注入其它扩展 点。
4, Dubbo 的扩展机制能很好的支持第三方 IoC 容器, 默认支持 Spring Bean
public class test3 {
public static void main(String[] args) {
ExtensionLoader<ISayHello> extensionLoader =