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 条评论
 下一页
  
   
   
   
   
  
  
  
  
  
  
  
  
 