主要定义了如下方法,这是比较经常使用的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的默认实现