AspectJAwareAdvisorAutoProxyCreator implements PostProcessor

postProcessorAfterInitialization(Object bean, String beanName)

1.在这个方法中 植入 AOP 

2.这个方法的调用 initializeBean方法

doCreateBean(beanName, BeanDefinition, args)  -->  initializeBean --> invokeAwareMethods

 

AutowireCapableBeanFactory 

doCreateBean(String beanName, BeanDefinition ,args)

// 单例 && 是否允许循环依赖 &&正在创建中

earlySingletonExposure 

将创建Bean的ObjectFactory放入缓存,ObjectFactory传入真正创建的“bean”对象,调用ObjectFactory的getObject时调用getEarlyBeanReference返回传入的“bean”,这个“bean”是相同的对象(“==”),这样实现了循环引用

addSingletonFactory(beanName, new ObjectFactory() {

    @Override

    public Object getObject() {

         return getEarlyBeanReference(beanName, beanDefintion, bean);

    }

});

 

AbstractBeanFactory 中 doGetBean(String name, Class<?> requiredType, Object[] args, typecheckOnly) 中

sharedSingleton = getSingleton(beanName, new ObjectFactory() {

    @Override

    public Object getObject() {

         return createBean(beanName, beanDefinition,args);

    }

})

这个也用到ObjectFactory   是直接创建了 singleton并存缓存 ,注意和上面区分

 

相关文章:

  • 2023-01-17
  • 2021-12-24
  • 2022-12-23
  • 2021-12-25
  • 2021-04-28
  • 2022-12-23
  • 2022-12-23
  • 2021-12-17
猜你喜欢
  • 2021-07-31
  • 2022-01-18
  • 2023-01-01
  • 2022-01-30
  • 2022-12-23
  • 2021-05-14
相关资源
相似解决方案