SPI

博客主要对比了JavaSPI和DubboSPI。DubboSPI在性能上有提升,JDK标准SPI会一次性实例化扩展点所有实现,浪费资源,而DubboSPI会缓存class和实例,还能直接根据key获取实例。此外,DubboSPI增加了对扩展点IoC和AOP的支持,可通过setter注入其它扩展点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JavaSPI

package linag.test.dubbo.core.spi.javaspi;

/**
 * @author wb-zgl234479
 * @create 2018/08/28 20:52
 **/

public interface ISayName {
    void say();
}
package linag.test.dubbo.core.spi.javaspi;

/**
 * @author wb-zgl234479
 * @create 2018/08/28 20:52
 **/

public class SayChineseName implements ISayName{
    @Override
    public void say() {
        System.out.println("肥朝");
    }
}
package linag.test.dubbo.core.spi.javaspi;

/**
 * @author wb-zgl234479
 * @create 2018/08/28 20:53
 **/

public class SayEnglishName implements ISayName{
    @Override
    public void say() {
        System.out.println("Toby");
    }
}
package linag.test.dubbo.core.spi.javaspi;

import java.util.ServiceLoader;

/**
 * @author wb-zgl234479
 * @create 2018/08/28 20:55
 **/

public class JavaSpiTest {
    public static void main(String[] args) {
        ServiceLoader<ISayName> loaders = ServiceLoader.load(ISayName.class);
        for(ISayName sayName : loaders) {
            sayName.say();
        }

    }
}

这里写图片描述

DubboSPI

一、提升性能
1)JDK 标准的 SPI 会一次性实例化扩展点所有实现,如果有扩展实现初始化很耗时,但如果没用上也加载,会很浪费资源。
2)dubbo spi会缓存class和实例
3)可以直接根据key来获取实例,而不像jdk的spi一样需要循环判断
二 、增加了对扩展点 IoC 和 AOP 的支持,一个扩展点可以直接 setter 注入其它扩展点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值