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

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

Spring IOC ( 四 ) : BeanDefinition( )

系統 2014 0

?BeanDefinition
org.springframework.beans.factory.config.BeanDefinition 是配置文件<bean>元素標簽在容器中內部表示形式。
<bean>元素標簽擁有class、scope、lazy-init等配置屬性,
BeanDefinition 則提供了相應的beanClass、scope、lazyInit屬性, BeanDefinition 就像是<bean>的鏡中人,兩者是一一對應的。 BeanDefinition 接口的繼承結構如圖5-2所示。

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

Spring IOC ( 四 ) : BeanDefinition( )


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

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

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 松滋市| 东丰县| 建平县| 油尖旺区| 荣昌县| 大洼县| 南康市| 依兰县| 旺苍县| 高陵县| 泸州市| 翁源县| 凤冈县| 庆元县| 潮安县| 桑植县| 彝良县| 平武县| 大荔县| 龙陵县| 安阳市| 营山县| 航空| 双牌县| 曲松县| 安塞县| 丰宁| 虹口区| 扎兰屯市| 府谷县| 长兴县| 正阳县| 礼泉县| 府谷县| 青神县| 卢龙县| 南雄市| 容城县| 塔城市| 栖霞市| 昂仁县|