AOP是什么: jdk+cglib ?
**Aop:
Aop (Aspect Oriented Programing ) 面向切面编程,相对于oop(面向对象编程)来说,Aop关注的不仅仅是程序代码中的某个类.或者说是某些方法,更多的是一种面对面的切入,即层与层之间的一种切入,所以称之为 切面
Aop可以什么?
Aop的主要应用于日志记录,性能统计,安全控制,事物处理等方面,实现公共功能的重复使用.
Aop带来的好处:
1 降低了模块与模块之间的耦合度,提高了业务断码的聚合度(高内聚低耦合)
2 提高了代码的复用性
3 提好了人系统的扩展性
Aop的基本概念:
1 Joinpoint(连接点)
被拦截到的每个点,spring 中指被拦截到的每一个方法,spring aop 一个连接点即代表一个方法的执行
2 Pointcut(切入点)
对连接点进行拦截的定义(匹配规则定义 规定拦截哪些方法,对哪些方 法进行处理),spring 这块有专门的表达式语言定义。
3 Advice (通知)
拦截到每一个连接点即(每一个方法)后所要做的操作
i. 前置通知 (前置增强) --before() 执行方法前通知
ii.返回通知(返回增强)–afterReturn 方法正常结束返回后的通知
iii.异常抛出通知(异常抛出增强)–afetrThrow()
iv.最终通知—after 无论方法是否发生异常,均会执行该通知。
v.环绕通知—around 包围一个连接点(join point)的通知,
如方法调用。
这是最强大的一种通知类型。 环绕通知可以在方法调用前后完成自定义的行为。它也会选择是否继续执行连接点或直接返回它们自己的返回值或抛出异常来结束执行。
4 Aspect(切面)
切入点与通知的结合,决定了切面的定义,切入点定义了要拦截哪些类的 哪些方法,通知则定义了拦截过方法后要做什么,切面则是横切关注点的抽象, 与类相似,类是对物体特征的抽象,切面则是横切关注点抽象
5 Target(目标对象)
被代理的目标对象
6.Weave(织入)
将切面应用到目标对象并生成代理对象的这个过程即为织入
7.Introduction(引入)
在不修改原有应用程序代码的情况下,在程序运行期为类动态添加方法或 者字段的过程称为引入