Java Spring Beans.xml裡的Bean定義是如何被解析出來的
ClassPathXmlApplicationContext的建構函式裡,一部分邏輯是給各個成員變數賦上初始值:
然後是執行refresh操作。
獲取ConfigurableListableBeanFactory:
來自Beans.xml的bean,被解析出來後,就儲存在BeanFactory的成員變數beanDefinitionMap裡。
那麼Beans.xml裡的bean定義,是如何被解析的呢?
進入abstractApplicationContext裡看個究竟:
loadBeanDefintions方法:
進入AbstractXmlApplicationContext的loadBeanDefinitions方法:
從Beans.xml處讀取並解析bean定義:reader.loadBeanDefinitions(configLocations);
遞迴呼叫方法AbstractBeanDefinitionReader的loadBeanDefinitions:
遞迴呼叫loadBeanDefinitions,此時這個方法接收的輸入引數成為了Resource型別:
進入了XmlBeanDefinitionReader.loadBeanDefinitions方法:
開始對Beans.xml檔案進行IO操作:
將Java IO操作返回的inputSource傳入doLoadDocument:
使用documentBuilder解析Beans.xml:
countBefore為0,然後進行registerBeanDefinitions操作:
在registerBeanDefintions方法裡,通過org.w3c.dom.Element提供的XML API進行解析:
解析分為preProcess,parseBeanDefinitions和postProcess三個步驟:
進入這個IF分支,說明在Beans.xml裡找到了一個bean節點:
這就是解析出來的beanDefinition:
在Beans.xml裡的bean定義如下:
要獲取更多Jerry的原創文章,請關注公眾號"汪子熙":
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24475491/viewspace-2708663/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Spring核心——Bean的定義與控制SpringBean
- Spring Bean 定義繼承SpringBean繼承
- 「Spring認證」Spring Bean 定義教學SpringBean
- Spring系列第四講 xml中bean定義詳解SpringXMLBean
- spring bean定義與載入方式SpringBean
- Spring中bean的含義SpringBean
- 將ABAP透明表的定義(後設資料)解析出來匯入到剪下板(clipboard)裡
- 獲取spring裡的beanSpringBean
- 我該如何學習spring原始碼以及解析bean定義的註冊Spring原始碼Bean
- Spring bean到底是如何建立的?(上)SpringBean
- 深入理解Spring的Bean定義物件BeanDefinition-面試重點SpringBean物件面試
- php變數的型別是如何轉換的?常量如何定義?系統常量是如何定義的?PHP變數型別
- Java Main 如何是如何被執行的?JavaAI
- Java開發學習(十)----基於註解開發定義beanJavaBean
- Spring Bean如何初始化的SpringBean
- 如何迅速分析出系統CPU的瓶頸在哪裡?
- 省掉bean自定義spring mvc註解注入json值BeanSpringMVCJSON
- SAP ABAP CDS view裡的註解在ABAP後臺是如何被解析的?View
- Spring Bean 詳解SpringBean
- spring4.1.8擴充套件實戰之五:改變bean的定義(BeanFactoryPostProcessor介面)Spring套件Bean
- 在Java中是如何定義和宣告介面的?Java
- 面試官:展開說說,Spring中Bean物件是如何通過註解注入的?面試SpringBean物件
- JavaScript中是如何定義私有變數的JavaScript變數
- Spring的Bean生命週期中@PostConstruct註解SpringBeanStruct
- Spring如何控制Bean的載入順序SpringBean
- SAP Fiori Elements List Report 裡的表格型別(tableType)是如何決定出來的型別
- Spring裝配Bean(五)profile註解和解決自動注入的歧義性SpringBean
- Spring是如何處理註解的Spring
- Spring框架是怎麼解決Bean之間的迴圈依賴的 (轉)Spring框架Bean
- 一次性講清楚spring中bean的生命週期之三:bean是如何例項化的SpringBean
- Spring 原始碼(7)Spring的註解是如何解析的?Spring原始碼
- Spring是如何支援多資料來源的Spring
- CRM系統是如何定義銷售漏斗的?
- 設計模式(三十)----綜合應用-自定義Spring框架-自定義Spring IOC-定義bean、登錄檔相關類設計模式Spring框架Bean
- JAVA面試題:Spring中bean的生命週期Java面試題SpringBean
- 效能分析(6)- 如何迅速分析出系統 CPU 的瓶頸在哪裡
- 《Spring》(六)---- Bean的scopeSpringBean
- 如何從Spring之外的非託管物件訪問 Spring Bean?Spring物件Bean