主要定義瞭如下方法,這是比較經常使用的java
容器中使用Str name惟一標識Beanspring
從上圖能夠看出BeanFactory接口共有三個子類數組
extends BeanFactory 後加強BeanFactory接口app
容器能夠以列表的形式提供Bean的相關信息編輯器
主要定義瞭如下方法spa
extends BeanFactory 後加強BeanFactory接口code
容器能夠有層級關係的cdn
public interface HierarchicalBeanFactory extends BeanFactory {
// 得到父容器
@Nullable
BeanFactory getParentBeanFactory();
// 本地容器是否存在Bean
boolean containsLocalBean(String var1);
}
複製代碼
extends BeanFactory 後加強BeanFactory接口對象
容器能夠自動裝配Bean的能力blog
主要定義瞭如下方法:
extends HierarchicalBeanFactory,SingletonBeanRegistry
IOC容器可配置的能力,
設置父容器,設置容器的類裝載器,屬性編輯器,容器通用的Bean初始化後置處理器等方法;
幾乎全部的beanFactory都會實現這個接口,賦予了BeanFactory可擴展的功能。
SingletonBeanRegistry 接口
容器單例Bean相關的能力(在運行期間向容器註冊單實例Bean)
public interface ConfigurableListableBeanFactory extends ListableBeanFactory, AutowireCapableBeanFactory, ConfigurableBeanFactory 複製代碼
整合了BeanFactory體系的接口
主要拓展瞭如下方法
向容器中註冊Bean的能力
spring配置文件中的每個bean節點元素在spring容器裏都經過一個BeanDefinition對象表示,描述了Bean的配置信息。
BeanDefinitionRegistry接口提供了向容器手工註冊BeanDefinition對象的方法
public interface BeanDefinitionRegistry extends AliasRegistry {
//註冊BeanBeanDefinition
void registerBeanDefinition(String beanName, BeanDefinition beanDefinition) throws BeanDefinitionStoreException;
//移除BeanBeanDefinition
void removeBeanDefinition(String beanName) throws NoSuchBeanDefinitionException;
//得到BeanDefinition
BeanDefinition getBeanDefinition(String beanName) throws NoSuchBeanDefinitionException;
boolean containsBeanDefinition(String beanName);
String[] getBeanDefinitionNames();
int getBeanDefinitionCount();
boolean isBeanNameInUse(String beanName);
}
複製代碼
public interface AliasRegistry {
//註冊一個別名
void registerAlias(String name, String alias);
//刪除別名
void removeAlias(String alias);
//判斷是不是別名
boolean isAlias(String beanName);
//得到一個名字的全部別名,以String數組的形式返回
String[] getAliases(String name);
}
複製代碼
咱們終於能夠看一眼全貌
左側是咱們看過的BeanFactory體系,右側是BeanDefinitionRegistry和抽象類實現
DefaultListableBeanFactory實現了ConfigurableListableBeanFactory,也就是實現了在BeanFactory體系講過的能力.
實現了BeanDefinitionRegistry,擁有向容器註冊Bean的基本能力
固然還有其餘一些,好比SingletonBeannRegistry.
接口的能力是在繼承的抽象類逐漸實現的,好比AbstractFactory和AbstractAutowireCapableBeanFactory.
DefaultListableBeanFactory是整個bean加載的核心部分,是Spring註冊及加載bean的默認實現