Dubbo内核解析-SPi(二)

前言

    本篇是spi的第二篇,紧接上一篇Dubbo内核解析-Spi,主要讲解spi中新增的AOP。首先也是先从Spring的AOP出发。

    Spring的AOP理解

Spring的AOP增强方式一共有5种,分别为

增强类型 应用场景
前置增强 权限控制、记录调用日志
后置增强 统计分析结果数据
异常增强 通过日志记录方法异常信息
最终增强 释放资源
环绕增强 缓存、性能、权限、事务管理

通过以下方式理解记忆:try-catch-finally 这样的模式进行理解


//环绕
try {
    //前置
    System.out.println("=====");
    //后置
}catch (Exception e){
    //异常
}finally {
    //最终
}

        SPi的AOP

栗子:

假如接口A还有另外一个实现者:Wrapper:

class Wrapper implements A{
    private A a;
    AWrapper1(A a){
      this.a = a;
    }
    
}

Wrapper相当于A的包装类,类似于AOP的功能,Wrappe增加了A的功能。当我们获取接口A的实现类的时候,得到的就是包装过的类。
 

通过 Wrapper 类可以把所有扩展点公共逻辑移至 Wrapper 中。新加的 Wrapper 在所有的扩展点上添加了逻辑,有些类似 AOP,即 Wrapper 代理了扩展点。

给接口注入拓展点是一个Adaptive实例,知道方法执行时,才决定是哪一个拓展点的实现,

dubbo相对jdk有哪些改变:

①通过使用缓存提高性能。

②增加了通过key形式获取拓展点。

③增加了@SPI注解的默认值。

④增加了Ioc和Aop功能。

猜你喜欢

转载自blog.csdn.net/z15732621582/article/details/81059914