Spring之AOP流程
2023-08-30 20:41:13 0 举报
Spring之AOP流程
作者其他创作
大纲/内容
所以代理对象执行方法时就会经过DynamicAdvisedInterceptor
将代理对象、被代理对象、当前正在执行的被代理类中的方法对象、方法参数、被代理的类、chain、当前正在执行的代理类中的方法对象整合成一个CglibMethodInvocation对象
开始执行MethodInterceptor不同类型的MethodInterceptor执行逻辑会有差异
创建代理对象子流程
获取Advisor中的Advice并封装成MethodInterceptor
构造Enhancer对象
初始化前
生成代理对象子流程
代理对象执行方法子流程
筛选出和当前bean对应的Advice、Advisor
将所有匹配的MethodInterceptor封装为List<span style=\
实例化前,会判断是否对当前beanName设置了TargetSource,可以通过CustomTargetSourceCreators来设置,如果设置了则直接针对所设置的TargetSource进行AOP,得到代理对象后直接返回,不会经过后续的生命周期了
当前Bean类型为PointCut、Advice、Advisor就不需要AOP
初始化
实例化得到原始对象
调用CglibMethodInvocation对象的proceed()方法
根据当前所调用方法和对应的类筛选对应的Advisor
给原始对象填充属性
MethodInterceptor执行完了之后,会执行被代理对象的对应的方法对象,也就是执行被代理对象中对应的方法,也就是业务方法
配置ProxyFactory
将commonInterceptors和specificInterceptors整合再一起
初始化后,开始AOP
构造一个ProxyFactory
设置DynamicAdvisedInterceptor为Callback
基于Bean原始对象和对应的Advice、Advisor创建代理对象,返回
先判断当前Bean是否需要AOP
Bean生命周期
0 条评论
下一页