加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

单例Bean注册表接口SingletonBeanRegistry

发布时间:2020-12-14 05:33:25 所属栏目:Windows 来源:网络整理
导读:Github: SingletonBeanRegistry.java SingletonBeanRegistry package org.springframework.beans.factory.config;import org.springframework.lang.Nullable;/** * 为共享Bean实例(shared bean instances)定义注册表(define a registry)的接口 * Can be impl

Github:
SingletonBeanRegistry.java

SingletonBeanRegistry

package org.springframework.beans.factory.config;

import org.springframework.lang.Nullable;

/**
 * 为共享Bean实例(shared bean instances)定义注册表(define a registry)的接口
 * Can be implemented by {@link org.springframework.beans.factory.BeanFactory}
 * implementations,以便用一种统一的方式来公开他们的单例管理设施(expose their singleton management facility)
 *
 * <p>The {@link ConfigurableBeanFactory} interface extends this interface.
 *
 * @author Juergen Hoeller
 * @since 2.0
 * @see ConfigurableBeanFactory
 * @see org.springframework.beans.factory.support.DefaultSingletonBeanRegistry
 * @see org.springframework.beans.factory.support.AbstractBeanFactory
 */
public interface SingletonBeanRegistry {

    /**
     * 在给定的bean名称下,在bean注册表中将给定的现有对象注册为singleton.
     * <p>他给出的实例应该被完全初始化;
     * 注册表不会执行任何初始化回调(特别是,它不会调用InitializingBean的{@code afterPropertiesSet}方法)
     * 给定的实例不会收到任何销毁回调
     *(比如,DisposableBean's {@code destroy} 方法)
     * <p>在完整的BeanFactory运行时:
     * <b>如果你的bean应该接收initialization或者destruction回调,
     * 注册bean定义而不是一个现有的实例</b>
     * <p>通常在注册表配置期间调用,* 但也可以用于单例的运行时注册
     * 因此,注册表实现应该同步单例访问
     * 如果它支持BeanFactory对单例的懒惰初始化,
     * 它将无论如何都必须这样做
     *
     * @param beanName the name of the bean
     * @param singletonObject the existing singleton object
     * @see org.springframework.beans.factory.InitializingBean#afterPropertiesSet
     * @see org.springframework.beans.factory.DisposableBean#destroy
     * @see org.springframework.beans.factory.support.BeanDefinitionRegistry#registerBeanDefinition
     */
    void registerSingleton(String beanName,Object singletonObject);

    /**
     * 返回在给定名称下注册的(原始)单例对象
     * <p>只检查已经实例化的单例;
     * 没有为 尚未实例化的单例bean定义 返回一个对象.
     * <p>此方法的主要目的是访问手动注册的单例
     * (see {@link #registerSingleton}). 
     * 也可以用于以原始的方式 访问已经创建的bean定义的单例     * <p><b>NOTE:</b> 此查找方法不知道FactoryBean的前缀或别名.
     * 在获取实例之前,需要首先解析规范bean名称
     *
     * @param beanName the name of the bean to look for
     * @return the registered singleton object,or {@code null} if none found
     * @see ConfigurableListableBeanFactory#getBeanDefinition
     */
    @Nullable
    Object getSingleton(String beanName);

    /**
     * 检查此注册表是否包含具有特定名称的单例实例
     * <p>仅检查已经实例化的单例; does not return {@code true}
     * 对于尚未初始化的单例bean定义,不返回{@code true}.
     * <p>此方法的主要目的是检查手动注册的单例
     * (see {@link #registerSingleton}).
     * 也可以用来检查一下已经创建了由bean定义的单例
     * <p>要检查bean工厂是否包含具有给定名称的bean定义,* 使用 ListableBeanFactory's {@code containsBeanDefinition}. 同时调用
     * {@code containsBeanDefinition} and {@code containsSingleton}
     * 就可以回答一个特定的bean工厂是否包含 
     * 具有给定名称的本地bean实例
     * <p>使用 BeanFactory's {@code containsBean} 来大体上检查工厂是否知道具有给定名称的bean
     * (无论是手动注册的单例实例还是bean定义创建的),* 也检查祖先工厂.
     * <p><b>NOTE:</b> T此查找方法不知道FactoryBean前缀或别名.
     * 在检查单例状态之前,您需要先解析规范bean名称.
     *
     * @param beanName the name of the bean to look for
     * @return if this bean factory contains a singleton instance with the given name
     * @see #registerSingleton
     * @see org.springframework.beans.factory.ListableBeanFactory#containsBeanDefinition
     * @see org.springframework.beans.factory.BeanFactory#containsBean
     */
    boolean containsSingleton(String beanName);

    /**
     * 返回在此注册表中注册的单例bean的名称
     * <p>只检查已经实例化的单例;不返回尚未实例化的单例bean定义的名称
     * <p>此方法的主要目的是检查手动注册的单例(请参阅{@link #registerSingleton})。 
     * 也可以用于检查已经创建了bean定义的单例。
     *
     * @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();

    /**
     * 返回在此注册表中的注册的单例bean的数量
     * <p>只检查已经实例化的单例; 不计算尚未实例化的单例bean定义
     * <p>此方法的主要目的是检查手动注册的单例实例
     * (see {@link #registerSingleton}).
     * 也可以用于计算已经创建的bean定义的单例数
     *
     * @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 mutex object (never {@code null})
     * @since 4.2
     */
    Object getSingletonMutex();

}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读