本文共 893 字,大约阅读时间需要 2 分钟。
AOP概念
AOP对通用的业务抽取并封装,形成独立的切面,使业务逻辑各部分之间的耦合度降低,提高程序复用性
相关概念
横切:OOP编程中,日志代码往往横向地散布在所有对象层次中,而与它对应的对象的核心功能毫无关系对于其他类型的代码,如安全性、异常处理和透明的持续性也都是如此,这种散布在各处的无关的代码被称为横切。
使用"横切"技术,AOP把软件系统分为两个部分:核心关注点和横切关注点。业务处理的主要流程是核心关注点,与之关系不大的部分是横切关注点。横切关注点的一个特点是,他们经常发生在核心关注点的多处,而各处基本相似,比如权限认证、日志、事物。
切面(Aspect):把通用的业务封装起来,降低模块之间的耦合度,实现代码的复用
连接点(Joint point):被拦截到的点,因为Spring只支持方法类型的连接点
切入点(Pointcut):定义了拦截“何处”的连接点的表达式
通知/增强(Advice):定义了连接点方法被调用的某个时间点执行,分为前置、后置、异常、最终、环绕通知五类
目标对象(Target):织入 Advice 的目标对象,代理的目标对象
织入(Weaving):将切面应用到目标对象并导致代理对象创建的过程
通知的类型
前置通知
@Before:在某连接点之前执行的通知,但这个通知不能阻止连接点之前的执行流程(除非它抛出一个异常)
后置通知
@AfterReturning:在某连接点正常完成后执行的通知,通常在一个匹配的方法返回的时候执行
环绕通知
@Around:在某连接点之前之后都执行的通知
环绕通知使用一个代理ProceedingJoinPoint类型的对象来管理目标对象,在通知体内,调用ProceedingJoinPoint的proceed()方法使导致后台的连接点方法执行
异常通知
@AfterThrowing:在方法抛出异常退出时执行的通知
最终通知
@After 最终通知:当某连接点退出的时候执行的通知(不论是正常返回还是异常退出)
三种切入点
全局切入点:多个切面共享
局部切入点:一个切面共享
通知范围切入点:当前通知内使用
转载地址:http://mpazi.baihongyu.com/