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