parseDefaultElement()
進行默認標籤解析delegate.parseCustomElement()
方法進行自定義解析默認標籤解析過程,源碼以下:java
private void parseDefaultElement(Element ele, BeanDefinitionParserDelegate delegate) { // 對 import 標籤的解析 if (delegate.nodeNameEquals(ele, IMPORT_ELEMENT)) { importBeanDefinitionResource(ele); } // 對 alias 標籤的解析 else if (delegate.nodeNameEquals(ele, ALIAS_ELEMENT)) { processAliasRegistration(ele); } // 對 bean 標籤的解析 else if (delegate.nodeNameEquals(ele, BEAN_ELEMENT)) { processBeanDefinition(ele, delegate); } // 對 beans 標籤的解析 else if (delegate.nodeNameEquals(ele, NESTED_BEANS_ELEMENT)) { // recurse doRegisterBeanDefinitions(ele); } }
importBeanDefinitionResource()
方法完成對 import 標籤的解析解析 import 過程較爲清晰,整個過程以下:node
判斷絕對路徑的規則以下:spring
若是 location 爲絕對路徑則調用 loadBeanDefinitions()
,該方法在 AbstractBeanDefinitionReader 中定義spa
若是是相對路徑則會根據相應的 Resource 計算出相應的絕對路徑,.net
整個過程比較清晰明瞭:code
loadBeanDefinitions()
方法進行遞歸的 BeanDefinition 加載