Spring AOP 中的代理对象是怎么创建出来的?

Spring AOP 中的代理对象是怎么创建出来的?

💡 原文中文,约16700字,阅读约需40分钟。
📝

内容提要

介绍Spring AOP中代理对象的创建过程,包括Bean的生命周期分为实例化、属性赋值、初始化和销毁四个阶段。在初始化阶段,通过后置处理器AbstractAutoProxyCreator的postProcessAfterInitialization方法进行AOP处理,根据切点过滤出能够应用到当前Bean的切面,并通过createProxy方法创建代理对象。

🎯

关键要点

  • 介绍Spring AOP中代理对象的创建过程。
  • Bean的生命周期分为实例化、属性赋值、初始化和销毁四个阶段。
  • 在初始化阶段,通过后置处理器AbstractAutoProxyCreator的postProcessAfterInitialization方法进行AOP处理。
  • 根据切点过滤出能够应用到当前Bean的切面。
  • 通过createProxy方法创建代理对象。
  • 实例化是通过反射创建Bean的实例。
  • 属性赋值是给创建的Bean的各个属性赋值。
  • 初始化阶段应用各种后置处理器。
  • 销毁阶段是Bean的生命周期的最后一步。
  • AOP代理对象的创建是在初始化过程中完成的。
  • AbstractAutowireCapableBeanFactory#doCreateBean方法用于创建Bean。
  • initializeBean方法执行各种后置处理器。
  • applyBeanPostProcessorsAfterInitialization方法遍历各种BeanPostProcessor并执行其后置方法。
  • AbstractAutoProxyCreator的postProcessAfterInitialization方法进行AOP处理。
  • wrapIfNecessary方法用于创建AOP代理对象。
  • getAdvicesAndAdvisorsForBean方法查找与当前类匹配的切面。
  • findEligibleAdvisors方法获取所有候选的Advisor。
  • findAdvisorsThatCanApply方法过滤出能够应用到当前Bean的切面。
  • createProxy方法用于创建代理对象。
➡️

继续阅读