【spring源碼-1】beanFactory vs FactoryBean vs ApplicationContext

文章要點:面試

一、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依賴注入過程

 

 DefaultBeanDefinitionDocumentReader類:

 

 

        BeanDefinitionReaderUtils類
 

 

 

 


 2、ApplicationContext -- 高級容器(推薦)

相關文章
相關標籤/搜索