AOP相关术语
-
JoinPoint: 连接点 所有可以被增强的方法
-
Pointcut: 切入点 具体项目中真正已经被增强的方法
-
Advice: 通知/增强 具体用于增强方法的代码
通知分为: 前置通知: 在原来方法之前执行. 后置通知: 在原来方法之后执行. 特点: 可以得到被增强方法的返回值 异常通知: 目标方法出现异常执行. 如果方法没有异常,不会执行. 特点:可以获得异常的信息 最终通知: 指的是无论是否有异常,总是被执行的。 环绕通知: 在方法之前和方法之后执行. 特点:可以阻止目标方法执行
public class TestDeno{
void sava(); -----> 其中一个方法就是切入点
void delete(); -------> 所有方法就是连接点
void update()
}
public class MyAspect{ ------>这个类是切面
public void check(){
System.out.println("权限校验") -----> 这个方法是通知
}
}
- AOP实现流程
1.首先通过后置处理器BeanPostProcessor对需要代理的bean进行处理。
2.获取AdvicesAndAdvisors,首先获取Advisor,利用PointCut判断是否需要代理,过滤出需要进行AOP的方法。
3.创建动态代理(默认JDK)
4.获取需要进行AOP方法的查看Advisor里面是否有Advice,若存在,利用反射执行所有切面的方法。