Java Spring Beans.xml里的Bean定义是如何被解析出来的
ClassPathXmlApplicationContext的構造函數(shù)里,一部分邏輯是給各個成員變量賦上初始值:
然后是執(zhí)行refresh操作。
獲取ConfigurableListableBeanFactory:
來自Beans.xml的bean,被解析出來后,就存儲在BeanFactory的成員變量beanDefinitionMap里。
那么Beans.xml里的bean定義,是如何被解析的呢?
進入abstractApplicationContext里看個究竟:
loadBeanDefintions方法:
進入AbstractXmlApplicationContext的loadBeanDefinitions方法:
從Beans.xml處讀取并解析bean定義:reader.loadBeanDefinitions(configLocations);
遞歸調(diào)用方法AbstractBeanDefinitionReader的loadBeanDefinitions:
遞歸調(diào)用loadBeanDefinitions,此時這個方法接收的輸入?yún)?shù)成為了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節(jié)點:
這就是解析出來的beanDefinition:
在Beans.xml里的bean定義如下:
要獲取更多Jerry的原創(chuàng)文章,請關注公眾號"汪子熙":
總結
以上是生活随笔為你收集整理的Java Spring Beans.xml里的Bean定义是如何被解析出来的的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java Spring初学者之调试器里括
- 下一篇: Java Spring里getBean方