Spring最核心的兩個類:
1.DefaultListableBeanFactory
XmlBeanFactory 繼承自DefaultListableBeanFactory.
DefaultListableBeanFactory是整個bean加載的核心,是spring註冊和加載bean的默認實現;
XmlBeanFactory和DefaultListableBeanFactory的區別在於:XmlBeanFactory使用了自定義的xml讀取器XmlBeanDefinitionReader,實現了BeanDefinitionReader讀取;DefaultListableBeanFactory繼承了AbstractAutowirecapableBeanFactory 並實現了ConfigurableListableBeanFactory和BeanDefinitionRegistry接口.
2.XmlBeanDefinitionReader
主要負責xml的讀取,包括資源文件的讀取.解析.註冊.
通過分析XmlBeanDefinitionReader中主要包含對xml配置文件處理的幾步,如下:
1).使用resourceLoader將資源文件路徑轉換成對應的Resource文件;
2).使用DocumentLoader對Resource進行轉換,轉換Document文件;
3).使用DefaultBeanDefinitionDocumentReder對document進行解析,並使用BeanDefinitionParserDelegate對Element進行解析.
BeanFactory bf = new XmlBeanFactory(new ClassPathResource("beanfactoryTest.xml"))
在上面這句代碼中的執行邏輯:
1)調用ClassPathResource構造器由classPath下的xml文件生成Resource對象;
2)在XmlBeanFactory構造器中加載resource,產生BeanFactory對象返回;
spring的配置文件的讀取是通過ClassPathResource來進行封裝的.
之後的讀取工作就右XmlBeanDefinitionReader來完成;