轉帖|行業(yè)資訊|編輯:郝浩|2016-02-23 11:39:33.000|閱讀 1595 次
概述:BeanFactory是IOC容器最重要的接口之一,本文介紹了BeanFactory的創(chuàng)建過程。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
下面是更新BeanFactory的方法代碼:
protected final void refreshBeanFactory() throws BeansException { if (hasBeanFactory()) { destroyBeans(); closeBeanFactory(); } try { DefaultListableBeanFactory beanFactory = createBeanFactory(); beanFactory.setSerializationId(getId()); customizeBeanFactory(beanFactory); loadBeanDefinitions(beanFactory); synchronized (this.beanFactoryMonitor) { this.beanFactory = beanFactory; } } catch (IOException ex) { throw new ApplicationContextException( "I/O error& nbsp;parsing bean definition source for " + getDisplayName (), ex); } }
這個方法實現了AbstractApplicationContext的抽象方法refreshBeanFactory,這段代碼清楚的說明了BeanFactory的創(chuàng)建過程。注意BeanFactory對象的類型的變化,前面介紹了他有很多子類,在什么情況下使用不同的子類這非常關鍵。BeanFactory的原始對象是DefaultListableBeanFactory,這個非常關鍵,因為他設計到后面對這個對象的多種操作,下面看一下這個類的繼承層次類圖:
從這個圖中發(fā)現除了BeanFactory相關的類外,還發(fā)現了與Bean的register相關。這在refreshBeanFactory方法中有一行l(wèi)oadBeanDefinitions(beanFactory)將找到答案,這個方法將開始加載、解析 Bean的定義,也就是把用戶定義的數據結構轉化為Ioc容器中的特定數據結構。
這個過程可以用下面時序圖解釋:
本站文章除注明轉載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn