Spring源码之HierarchicalBeanFactory SingletonBeanRegistry ConfigurableBeanFactory

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工厂配置方法的特殊访问。

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值