SpringAOP
2022-06-30 13:49:35 0 举报
Spring源码AOP
作者其他创作
大纲/内容
代理对象执行方法子流程
Bean的生命周期
构建一个ProxyFactory
初始化后,这里就开始进行AOP
初始化前
先判断当前bean是不是要进行AOP,比如当前Bean类型是Pointcut,Advice,Advisor等那就不需要进行AOP
基于bena的原始对象和所匹配的Advice和Advisor创建代理对象,然后返回
将代理对象,被代理对象,当前正在执行的被代理类中的方法对象,方法参数,被代理的类,chain,当前正在执行的代理类中的方法对象整合一个ChlibMethodInvocation对象
调用ChlibMethodInvocation对象中的proceed()方法
将CommonInterceptors和specificInterceptors整合在一起
获取Advisor中的Advice,并封装为MethodInterceptor
创建代理对象子流程
生成代理对象子流程
构造Enhancer对象
初始化
MethodInterceptor执行完之后,会执行被代理对象的对应方法对象,也就是执行被代理对象中的对应方法,也就是业务方法
给原始对象填充属性
设置DynamicAdvisedIntereceptor为Callback
开始执行MethodInterceptor,不同类型的MethodInterceptor执行逻辑会有差异
将得到的所有匹配的MethodInterceptor组合成List<Object> chain
根据当前所调用的方法和对应的类筛选对应的Advisor
实例化,得到原始对象
配置ProxyFacory
筛选出和当前bean所匹配的Advice和Advisor
所以代理对象执行方法时就会经过DynamicAdvisedInterceptor
0 条评论
下一页