元素標(biāo)簽在容器中內(nèi)部表示形式。元素標(biāo)簽擁有class、scope、lazy-init等配置屬性,BeanDefinition則提供了相應(yīng)的beanClass、scope、lazyInit屬性,BeanDefinition就像是的鏡中人,兩者是一一對(duì)應(yīng)的。BeanDefinit" />

日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

Spring IOC ( 四 ) : BeanDefinition( )

系統(tǒng) 2002 0

?BeanDefinition
org.springframework.beans.factory.config.BeanDefinition 是配置文件<bean>元素標(biāo)簽在容器中內(nèi)部表示形式。
<bean>元素標(biāo)簽擁有class、scope、lazy-init等配置屬性,
BeanDefinition 則提供了相應(yīng)的beanClass、scope、lazyInit屬性, BeanDefinition 就像是<bean>的鏡中人,兩者是一一對(duì)應(yīng)的。 BeanDefinition 接口的繼承結(jié)構(gòu)如圖5-2所示。

Spring IOC ( 四 ) : BeanDefinition(  )
圖5-2? BeanDefinition類繼承結(jié)構(gòu)
RootBeanDefinition 是最常用的實(shí)現(xiàn)類,它對(duì)應(yīng)一般性的<bean>元素標(biāo)簽。我們知道在配置文件中可以定義父<bean>和子<bean>,父<bean>用 RootBeanDefinition 表示,而子<bean>用 ChildBeanDefiniton 表示,而沒(méi)有父<bean>的<bean>就使用 RootBeanDefinition 表示。 AbstractBeanDefinition 對(duì)兩者共同的類信息進(jìn)行抽象。
Spring通過(guò) BeanDefinition 將配置文件中的<bean>配置信息轉(zhuǎn)換為容器的內(nèi)部表示,并將這些 BeanDefiniton 注冊(cè)到 BeanDefinitonRegistry 中。Spring容器的 BeanDefinitionRegistry 就像是Spring配置信息的內(nèi)存數(shù)據(jù)庫(kù),后續(xù)操作直接從 BeanDefinitionRegistry 中讀取配置信息。一般情況下, BeanDefinition 只在容器啟動(dòng)時(shí)加載并解析,除非容器刷新或重啟,這些信息不會(huì)發(fā)生變化,當(dāng)然如果用戶有特殊的需求,也可以通過(guò)編程的方式在運(yùn)行期調(diào)整 BeanDefinition 的定義。
創(chuàng)建最終的 BeanDefinition 主要包括兩個(gè)步驟:
1)利用 BeanDefinitionReader 對(duì)配置信息 Resource 進(jìn)行讀取,通過(guò)XML解析器解析配置信息的DOM對(duì)象,簡(jiǎn)單地為每個(gè)<bean>生成對(duì)應(yīng)的 BeanDefinition 對(duì)象。但是這里生成的 BeanDefinition 可能是半成品,因?yàn)樵谂渲梦募?,我們可能通過(guò)占位符變量引用外部屬性文件的屬性,這些占位符變量在這一步還沒(méi)有被解析出來(lái)。
2)利用容器中注冊(cè)的 BeanFactoryPostProcessor 對(duì)半成品的 BeanDefinition 進(jìn)行加工處理,將以占位符表示的配置解析為最終的實(shí)際值,這樣半成品的 BeanDefinition 就為成品的 BeanDefinition

Spring IOC ( 四 ) : BeanDefinition( )


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦?。?!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 临沭县| 衡水市| 铜陵市| 平阴县| 巴马| 通辽市| 武义县| 普定县| 旬邑县| 汉阴县| 南江县| 枞阳县| 伊吾县| 确山县| 栖霞市| 铁岭县| 罗甸县| 通许县| 长子县| 巴东县| 集安市| 廉江市| 铁岭市| 明光市| 辰溪县| 黔东| 无极县| 东丰县| 拜泉县| 南丰县| 永川市| 罗山县| 桂林市| 龙游县| 伊金霍洛旗| 双辽市| 镇雄县| 白城市| 平南县| 肥东县| 河北省|