Spring Aop 面试中常见问题
1.代理模式实现三要素是什么?
接口,真实对象,代理对象
2.jdk 动态代理与 cglib 动态代理区别是什么?
java动态代理是利用反射机制生成一个实现代理接口的匿名类,在调用具体方法前调用InvokeHandler来处理。
而cglib动态代理是利用asm开源包,对代理对象类的class文件加载进来,通过修改其字节码生成子类来处理。
3.Spring AOP 两种实现机制是什么?
动态代理 jdk cglib
4.什么是 aop,谈谈你对 aop 的理解。
面向切面编程
5.aop 通知类型有哪些?
before,around,afterReturn,afterThrow,after
总结
- 代理模式实现三要素
i.接口定义
ii.目标对象 与代理对象必须实现统一接口
iii.代理对象持有目标对象的引用 增强目标对象行为 - 代理模式实现分类以及对应区别
静态代理:手动为目标对象制作代理对象,即在程序编译阶段完成代理对象的创建上海尚学堂智能科技有限公司
www.shsxt.com
20
动态代理:在程序运行期动态创建目标对象对应代理对象。
jdk 动态代理:被代理目标对象必须实现某一或某一组接口 实现方式 通过回
调创建代理对象。
cglib 动态代理:被代理目标对象可以不必实现接口,继承的方式实现。
动态代理相比较静态代理,提高开发效率,可以批量化创建代理,提高代码复用率。 - Aop 理解
i. 面向切面,相比 oop 关注的是代码中的层 或面
ii. 解耦,提高系统扩展性
iii. 提高代码复用 - Aop 关键词
- 连接点:每一个方法
- 切入点:匹配的方法集合
- 切面:连接点与切入点的集合决定了切面,横切关注点的抽象
- 通知:几种通知
- 目标对象:被代理对象
- 织入:程序运行期将切面应用到目标对象 并生成代理对象的过程
- 引入:在不修改原始代码情况下,在程序运行期为程序动态引入方法或字段的
过程