- aop 的原理 :
- 代理模式—静态代理的优点:*客户端和代理对象的桥梁 *无侵入性的增强业务代码,解耦利器 *增强点多样化(前入,后入,异常)
- 代理模式—静态代理局限性:*扩展能力差(横向—代理更多的类,需要建更多的代理类实现全部的接口,纵向—增加更多的方法,代理类必须实现对象全部的方法) *可维护性差
- 代理模式— 动态代理
JDK动态代理
private Object actot;
Object invoke(Object proxy,Method method,Object[] args) throw Throwable{
//前入方法
//反射调用
Object ret =method.invoke( actor,agrs);
//后入方法
return ret;
}
——动态代理的原理
——动态代理的问题:
- 代理类的.class文件在哪? *本地硬盘,*网络,*内存。
- 代理类的实例是怎么产生的? *通过反射和构造函数。
- 方法是怎么增强的? *invacationhander.invoke()
——动态代理的局限性
- 被代理的类必须实现类必须实现invocationhandler个接口
- 底层使用反射运行期性能较差
CGLib动态代理 ——实现运行期动态扩展java类,核心api—*MethoInterceptor,*Enhancer(增强器)
CGLib动态代理的局限性:* 类和方法不能加final修饰,*会拦截被代理的所有方法