轉(zhuǎn)帖|行業(yè)資訊|編輯:郝浩|2016-02-23 11:39:33.000|閱讀 1595 次
概述:BeanFactory是IOC容器最重要的接口之一,本文介紹了BeanFactory的創(chuàng)建過(guò)程。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
下面是更新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); } }
這個(gè)方法實(shí)現(xiàn)了AbstractApplicationContext的抽象方法refreshBeanFactory,這段代碼清楚的說(shuō)明了BeanFactory的創(chuàng)建過(guò)程。注意BeanFactory對(duì)象的類型的變化,前面介紹了他有很多子類,在什么情況下使用不同的子類這非常關(guān)鍵。BeanFactory的原始對(duì)象是DefaultListableBeanFactory,這個(gè)非常關(guān)鍵,因?yàn)樗O(shè)計(jì)到后面對(duì)這個(gè)對(duì)象的多種操作,下面看一下這個(gè)類的繼承層次類圖:
從這個(gè)圖中發(fā)現(xiàn)除了BeanFactory相關(guān)的類外,還發(fā)現(xiàn)了與Bean的register相關(guān)。這在refreshBeanFactory方法中有一行l(wèi)oadBeanDefinitions(beanFactory)將找到答案,這個(gè)方法將開(kāi)始加載、解析 Bean的定義,也就是把用戶定義的數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)化為Ioc容器中的特定數(shù)據(jù)結(jié)構(gòu)。
這個(gè)過(guò)程可以用下面時(shí)序圖解釋:
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn