Spring系列文章首發:簡單聊聊BeanFactory繼承體系
1.BeanDefinitionRegistry 登錄檔
Spring 配置檔案中每一個節點元素在 Spring 容器裡都通過一個 BeanDefinition 物件表示,它描述了 Bean 的配置資訊。而 BeanDefinitionRegistry 介面提供了向容器手工註冊BeanDefinition 物件的方法。
2.BeanFactory 頂層介面
位於類結構樹的頂端 ,它最主要的方法就是 getBean(String beanName),該方法從容器中返回特定名稱的 Bean,BeanFactory 的功能通過其他的介面得到不斷擴充套件。
3.ListableBeanFactory
該介面定義了訪問容器中 Bean 基本資訊的若干方法,如檢視 Bean 的個數、獲取某一型別Bean 的配置名、檢視容器中是否包括某一 Bean 等方法。
4.HierarchicalBeanFactory 父子級聯
父子級聯 IoC 容器的介面,子容器可以通過介面方法訪問父容器; 通過HierarchicalBeanFactory 介面, Spring 的 IoC 容器可以建立父子層級關聯的容器體系,子容器可以訪問父容器中的 Bean,但父容器不能訪問子容器的 Bean。Spring 使用父子容器實現了很多功能,比如在 Spring MVC 中,展現層 Bean 位於一個子容器中,而業務層和持久層的 Bean 位於父容器中。這樣,展現層 Bean 就可以引用業務層和持久層的 Bean,而業務層和持久層的 Bean 則看不到展現層的 Bean。
5.ConfigurableBeanFactory
是一個重要的介面,增強了 IoC 容器的可定製性,它定義了設定類裝載器、屬性編輯器、容器初始化後置處理器等方法。
6.AutowireCapableBeanFactory 自動裝配
定義了將容器中的 Bean 按某種規則(如按名字匹配、按型別匹配等)進行自動裝配的方法。
7.SingletonBeanRegistry 執行期間註冊單例 Bean
定義了允許在執行期間向容器註冊單例項 Bean 的方法;對於單例項( singleton)的 Bean 來說,BeanFactory 會快取 Bean 例項,所以第二次使用 getBean() 獲取 Bean 時將直接從IoC 容器的快取中獲取 Bean 例項。Spring 在 DefaultSingletonBeanRegistry 類中提供了一個用於快取單例項 Bean 的快取器,它是一個用 HashMap 實現的快取器,單例項的 Bean 以beanName 為鍵儲存在這個 HashMap 中。