aop的实现
1.xml实现
2.混合模式
xml加注解
3.注解模式
切面分析:前置通知后置通知和返回通知,异常通知
开启代理类
AopContext.currentProxy()是获取saveUser的代理类
原理
注册后置处理器
1.获取名称
2,根据名称,有四种beanpostprocessor,循环名称,
排序并且注册
order处理器实现
进行启动
寻找aspectj切面
获取切面。
获取注解
获取pointcut
获取切面注解
从方法中循环,查看有误before,around等的注解
aop创建代理对象
匹配后返回
创建代理类
1jdk代理
2.检查某个方法
3.检查exposeProxy是否暴露
4.获取方法上的拦截链
5.检查是否找到,找不到就将advisor转化为interceptor并返回。
6.如果空,调用原方法
7.不为空,触发递归调用。
-1检查是否为当前线程
调用流程