AOP概念
定义:
面向切面编程,扩展功能不修改源文件
AOP采用横向抽取机制,取代了传统纵向继承体系重复性代码(性能监视,事务管理,安全检查,缓存)
AOP原理
AOP操作术语
我们有如下一个类:
public class Person{
public void add(){};
public void delete(){};
public void update(){};
public void find(){}
}
- Joinpoint 连接点: 类里面哪些方法可以被增强,这些方法就叫连接点,比如Person类中的4个方法都是joinpoint
- Pointcut 切入点(重点):在类中可以有很多方法被增强,但是在实际操作中,只增强了类中的某种或某几种方法,这些方法就叫切入点
- Advice 通知/增强(重点):实际增强的逻辑,比如add()中扩展日志功能,那么日志功能就叫做增强,细分为以下4个
- 前置通知:在方法之前执行
- 后置通知:在方法之后执行
- 异常通知:方法出现异常
- 最终通知:在后置之后执行
- 环绕通知:在方法之前和之后执行
- Aspect 切面(重点):把增强应用到具体的方法上面,比如在add()方法中添加日志功能,那么把日志用到add()中的过程就是aspect ,即把增强用到切入点的过程