AOP的概述
什么是AOP的技术?
Aspect Oriented Programming 的缩写 意为:面向切面编程。
AOP是一种编程范式,属于软件工程范畴。指导开发者如何组织程序结构。
利用AOP
- 可以对业务逻辑进行隔离
- 降低耦合度
- 提高程序的可重用性。
- 提高开发效率
AOP的优势
- 减少重复代码
- 提供开发的效率
- 维护方便
AOP的底层原理
AOP底层既是代理技术
- JDK动态代理 编写的程序必须要有接口
- cglib代理技术 生成类的子类
AOP专业术语
- Joinpoint(连接点) 所谓连接点是指那些被拦截到的点,在spring中指的是方法。因为spring只支持方法类型的连接点
- Pointcut(切入点) 所谓切入点是指我们要对那些Joinpoint(连接点)进行拦截的定义
- Advice(通知/增强) 通知是指拦截到Joinpoint(连接点)之后所要做的事情就是通知。通知分为:
- 前置通知
- 后置通知
- 异常通知
- 最终通知
- 环绕通知(切面要完成的功能)
- Target(目标对象) 代理的目标对象
- Weaving(织入) 是指把增强应用到目标对象来创建新的代理对象的过程
- Proxy(代理) 一个类被AOP织入增强后,就产生一个结果代理类
- Aspect(切面) 是切入点和通知的结合,需要自己填写和配置
何谓切面Aspect
切面 = Pointcut切入点 + Advice增强
类 = 编写配置文件 + 编写方法
教程详解
- 编写切面类
- 编写增强方法
- 配置Spring文件
最终通知 after
目标对象方法执行成功或者失败 都会增强类似finally
后置通知 after-returning
目标对象方法执行成功 才会增强
异常通知 after-throwing
目标对象方法执行失败 才会增强
环绕通知 around
自己决定增强的位置 如果使用了环绕通知,目标对象的方法默认不执行,需要手动执行目标方法