spring ObjectFactory


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并存缓存 ,注意和上面区分

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM