HierarchicalBeanFactory :子接口由bean工厂实现,它可以是层次结构的一部分。
BeanFactory的子类,分层的Bean工厂 在ConfigurableBeanFactory接口中可以找到允许以可配置方式设置父级的bean工厂的相应{@code setParentBeanFactory}方法。
BeanFactory getParentBeanFactory(); 返回上级Bean工厂,如果没有,则返回NULL;
boolean containsLocalBean(String name);返回本地bean工厂是否包含给定名称的bean,忽略祖先上下文中定义的bean。
SingletonBeanRegistry :定义共享bean实例注册器的接口,可以通过BeanFactory的实现来实现,以便以统一的方式公开其单例管理 能力。
void registerSingleton(String beanName, Object singletonObject);在给定的bean名称下,将给定的现有对象注册为bean注册表中的单例。假定给定实例是完全初始化的;注册表将不会执行任何初始化回调(尤其是,它不会调用InitializingBean的{@code afterPropertiesSet}方法)。给定实例将不会接收任何破坏性回调(如DeababeBea{@code destroy}方法)。当运行在一个完整的BeanFactory:如果bean应该接收初始化和/或销毁回调,则注册bean定义而不是现有实例。通常在注册表配置中调用,但也可用于单进程的运行时注册。因此,注册表实现应该同步单点访问;无论如何,如果它支持一个BeanFactory's懒惰单例的初始化,就必须这样做。
Object getSingleton(String beanName);返回在给定名称下注册的单例对象。只检查已经实例化的单例;不返回尚未实例化的单例bean定义的Object。这种方法的主要目的是访问手工注册的单例。还可以用来以原始方式访问由已经创建的bean定义定义的单例。此查找方法不知道FactoryBean前缀或别名。在获取单例实例之前,首先需要解析规范bean名称。
boolean containsSingleton(String beanName);检查注册表中是否存在名称为beanName的单例。只检查已经实例化的单例;尚未实例化的单例bean定义不返回{@code true}。这种方法的主要目的是检查手工注册的单例。还可以用来检查由bean定义定义的单例是否已创建。要检查bean工厂是否包含具有给定名称的bean定义,请使用ListableBeanFactory的{@code containsBeanDefinition}。调用{@code containsBeanDefinition}和{@code containsSingleton}都会回答特定bean工厂是否包含具有给定名称的本地bean实例。使用BeanFactory的{@code containsBean}进行一般检查,检查工厂是否知道具有给定名称的bean(无论是手动注册的单例实例还是通过bean定义创建),还检查祖先工厂。此查找方法不知道FactoryBean前缀或别名。在获取单例实例之前,首先需要解析规范bean名称。
String[] getSingletonNames();返回注册在该注册表中的Sigelon bean的名称。只检查已经实例化的单例;不返回尚未实例化的单例bean定义的名称。
int getSingletonCount();返回注册在这个注册表中的单例bean的数量。只检查已经实例化的单体;不计算尚未实例化的单bean定义。
Object getSingletonMutex();返回此注册表(用于外部合作者)使用的单例互斥体。
ConfigurableBeanFactory :HierarchicalBeanFactory, SingletonBeanRegistry的子类,配置接口由大多数bean工厂实现。除了{@link BeanFactory}接口中的bean工厂客户端方法之外,还提供配置bean工厂的工具。此bean工厂接口不适用于正常应用程序。,这个扩展接口只是为了允许框架内部即插即用和对bean工厂配置方法的特殊访问。