首先看下Spring是怎么保证单例的,时序图如下:

查看大图

Bean实例生成单例Bean

下图是Bean实例化的两种途径:

查看大图

Bean实例化的两种途径

下图是Bean实例化的常规途径:

查看大图

Bean实例化的常规途径

以上逻辑是实例化Bean的主要逻辑,里面最重要的是应用各种BeanPostProcessor,而这些BeanPostProcessor中最为出彩的是InfrastructureAdvisorAutoProxyCreator(使用AspectJ形式注解AOP时为AnnotationAwareAspectJAutoProxyCreator)。InfrastructureAdvisorAutoProxyCreator通过继承树中AbstractAutoProxyCreator实现了大部分主要逻辑。那现在我们就通过BeanPostProcessor这座桥梁迈进AOP的大门:迈进AOP的大门

附录:

  1. BeanPostProcessor类图
  2. BeanPostProcessor-InstantiationAwareBeanPostProcessor类图
  3. BeanPostProcessor-AbstractAutoProxyCreator类图
  4. BeanPostProcessor-MergedBeanDefinitionPostProcessor类图
  5. BeanPostProcessor-DestructionAwareBeanPostProcessor类图
  6. BeanPostProcessor-AbstractAdvisingBeanPostProcessor类图

快速导航: