主要是对dubbo的扩展点做一些切面的扩展,
以下是获取指点名称的扩展类,
如果从两个factory中都没有获取到,则创建
先从缓存中获取实例,如果没有,在new一个实例。然后调用
injectExtension(instance);
进行注入。
源码中的cachedWrapperClasses是在loadFile里面加载的,"WrapperClass"是符合某种特征的扩展接口实现类的称呼。
例如:
ProtocolFilterWrapper和ProtocolListenerWrapper。
他们共同特征就是带有Protocol接口的构造函数(装饰模式)
wrapperClass.getConstructor(type).newInstance(instance)); 就是将拿到的instance放到一个包装类中,然后经过一层包装之后,在放到另外一个包装类中。
通过这种方式dubbo实现了扩展点的AOP