文章要點:面試
一、BeanFactory 和 ApplicationContext 的類繼承關係spring
二、常見面試題框架
刷新紀錄:ui
2019-6-13 補充BeanFactory的類圖spa
1、BeanFactory (interface) 基礎容器3d
public interface BeanFactory { xml
接口實現及繼承關係:對象
一、最終的默認實現是 DefaultListableBeanFactory,實現了全部的接口;blog
二、定義這麼多層級的接口和類目的:每一個接口都有它使用的場合,爲了區分在spring內部對象的傳遞和轉換過程當中,對對象的數據訪問所作的限制。繼承
三、ListableBeanFactory表示這些bean是可列表的;HierarchicalBeanFactory表示這些bean是有繼承關係的(每一個bean可能有父bean)。
四、AutowireCapableBeanFactory定義Bean的自動裝配規則
XmlBeanFactory
使用方法:XmlBeanFactory factory = new XmlBeanFactory (new ClassPathResource("Beans.xml"));
利用框架提供的 XmlBeanFactory() API 去生成工廠 bean 以及利用 ClassPathResource() API 去加載在路徑 CLASSPATH 下可用的 bean 配置文件。
源碼:從源碼類的@Deprecated就能夠看出不推薦使用
經過實例化時會傳入一個Resource對象(從上述)
BeanDefinition: 對IOC中對象依賴關係的抽象
XmlBeanDefinitionReader: 從類名看功能就是會讀取XML格式的bean定義文件,此處的doLoadBeanDefinitions最終跳轉執行以下紅框方法:
步驟1:經過 DocumentBuilderFactory方式讀取XML文件
步驟2:註冊bean定義: Bean定義保存到HashMap中,這裏並不涉及Bean依賴注入過程
2、ApplicationContext -- 高級容器(推薦)