主要是对dubbo的扩展点做一些切面的扩展,

以下是获取指点名称的扩展类,

dubbo系列<13>-dubbo中的AOP_接口实现

如果从两个factory中都没有获取到,则创建

dubbo系列<13>-dubbo中的AOP_接口实现_02

先从缓存中获取实例,如果没有,在new一个实例。然后调用

injectExtension(instance);

进行注入。

源码中的cachedWrapperClasses是在loadFile里面加载的,"WrapperClass"是符合某种特征的扩展接口实现类的称呼。

例如:

ProtocolFilterWrapper和ProtocolListenerWrapper。

他们共同特征就是带有Protocol接口的构造函数(装饰模式)

dubbo系列<13>-dubbo中的AOP_构造函数_03

dubbo系列<13>-dubbo中的AOP_构造函数_04


wrapperClass.getConstructor(type).newInstance(instance)); 就是将拿到的instance放到一个包装类中,然后经过一层包装之后,在放到另外一个包装类中。


通过这种方式dubbo实现了扩展点的AOP