AopProxy分析
AOP代理的层次结构:

从上图中可以看出:
- AopProxy:定义了代理的接口
- AopProxyFactoy:定义了工厂接口,为了创建AopProxy;
- DefaultAopProxyFactory:则是AopProxyFactoy的实现
- CglibAopProxy:一种实现
- JdkDynamicAopProxy:另一种实现
典型的工厂模式。
JdkDynamicAopProxy.getProxy
- 得到proxiedInterfaces
- Proxy.newProxyInstance
JdkDynamicAopProxy为什么实现了InvocationHandler?
因为:newProxyInstance(ClassLoader loader, Class<?>[] interfaces, InvocationHandler h) 最后一个参数为InvocationHandler。这是一种设计技巧。
CglibAopProxy.getProxy
- 构造enhancer
- enhancer.create