分享人:茹程远
1.背景介绍
2.知识剖析
3.常见问题
4.配置展示
5.扩展思考
6.参考文献
7.更多讨论
Spring中使用了两种动态代理方式,一种是基于JDK的动态代理,一种是基于CGlib的动态代理
AOP从程序运行角度考虑程序的结构,提取业务处理过程的切面,oop是静态的抽象,aop是动态的抽象,是对应用执行过程中的步骤进行抽象,,从而获得步骤之间的逻辑划分。
三种代理方式
静态代理:由程序员创建或特定工具自动生成源代码,再对其编译。在程序运行前,代理类的.class文件就已经存在了。
动态代理:在程序运行时,运用反射机制动态创建而成。
Cglib动态代理 : cglib是针对类来实现代理的,他的原理是对指定的目标类生成一个子类,并覆盖其中方法实现增强,但因为采用的是继承,所以不能对final修饰的类进行代理。
区别
静态织入,提前写好代码,确切知道代理是谁
JDK动态代理:不需要提前知道类,但是需要进行 有接口
CGlib动态代理:不需要接口
源码
CGlib比JDK区别
http://www.iteye.com/topic/1116696
https://www.cnblogs.com/bigmonkeys/p/7823268.html
https://www.cnblogs.com/Eason-S/p/5857110.html
https://segmentfault.com/a/1190000009165134
欢迎大家讨论