SingletonBeanRegistry

此接口是针对Spring中的单例Bean设计的。提供了统一访问单例Bean的功能,BeanFactory可实现此接口以提供访问内部单例Bean的能力

public interface SingletonBeanRegistry {

    /**
     * 以指定的名字将给定Object注册到BeanFactory中。
     * 给定的Object必须是被完全初始化了的,此注册接口不会提供任何用以初始化的回调函数,需要特意提及的
     * 一点是InitializingBean的afterPropertiesSet方法也不会被此注册接口调用,并且,指定实例
     * 也不会收到destroy的信息.
     * 如果此接口的实现类是一个BeanFactory,最好将你的类注册成Bean Definition而不是直接使用对象
     * 注册,前一种注册方式的好处在于,它可以使你定义的Bean收到initialization和destruction回调。
     * 此方法通常在配置和注册Bean期间调用,但是也不排斥在运行时动态的向其中注册单例对象。因此实现类
     * 应该同步代码对单例Bean的访问方法
     */
    void registerSingleton(String beanName, Object singletonObject);

    /**
     * 以Object的形式返回指定名字的Bean。仅仅返回已经初始化完成的Bean,对于还没有初始化的
     * Bean Definition不予以考虑
     * 此方法的主要目的是提供一种手动获取已注册单例Bean的方式,同样的对于通过Bean Definition注册的
     * Bean也可以通过此方式获得
     * 但是要注意,此方法并不支持使用别名对Bean进行查找,如果只有别名的话,要先通过BeanFactory的接口
     * 获取到Bean对应的全限定名称
     */
    Object getSingleton(String beanName);

    /**
     * Check if this registry contains a singleton instance with the given name.
     * 检查此实例是否包含指定名字的并且!!!已经初始化完成的单例Bean。
     * 此方法的主要目标是提供一种手动检测Bean是否初始化完成的手段。也可用于检测通过BeanDefinition
     * 定义的Bean是否创建完成。
     * 如果要检测BeanFactory中是否包含指定name的BeanDefinition(不管是否初始化完毕),可使用BeanFactory
     * 的containsBeanDefinition。同时判断containsBeanDefinition和本方法,可以判断BeanFactory是否包含
     * 已经初始化完毕的Bean
     * 而BeanFactory的containsBean方法是用于通用检测一个BeanFactory或者其父上下文是否有
     * 一个指定名字的Bean的手段。
     * 不支持别名查找
     */
    boolean containsSingleton(String beanName);

    /**
     * Return the names of singleton beans registered in this registry.
     * <p>Only checks already instantiated singletons; does not return names
     * for singleton bean definitions which have not been instantiated yet.
     * <p>The main purpose of this method is to check manually registered singletons
     * (see {@link #registerSingleton}). Can also be used to check which singletons
     * defined by a bean definition have already been created.
     * @return the list of names as a String array (never {@code null})
     * @see #registerSingleton
     * @see org.springframework.beans.factory.support.BeanDefinitionRegistry#getBeanDefinitionNames
     * @see org.springframework.beans.factory.ListableBeanFactory#getBeanDefinitionNames
     */
    String[] getSingletonNames();

    /**
     * Return the number of singleton beans registered in this registry.
     * <p>Only checks already instantiated singletons; does not count
     * singleton bean definitions which have not been instantiated yet.
     * <p>The main purpose of this method is to check manually registered singletons
     * (see {@link #registerSingleton}). Can also be used to count the number of
     * singletons defined by a bean definition that have already been created.
     * @return the number of singleton beans
     * @see #registerSingleton
     * @see org.springframework.beans.factory.support.BeanDefinitionRegistry#getBeanDefinitionCount
     * @see org.springframework.beans.factory.ListableBeanFactory#getBeanDefinitionCount
     */
    int getSingletonCount();

    /**
     * Return the singleton mutex used by this registry (for external collaborators).
     * @return the mutex object (never {@code null})
     * @since 4.2
     */
    Object getSingletonMutex();

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值