SingletonBeanRegistry

38次阅读

共计 1760 个字符,预计需要花费 5 分钟才能阅读完成。

/**
 * 以接口的方式,定义注册表共享 bean 实例。可以被 org.springframework.beans.factory.BeanFactory 实现类实现,用统一的方式暴露它们的单例。*/
public interface SingletonBeanRegistry {

    /**
     * 基于给定的 bean 名称,在 bean 注册表中注册给定的存在的对象作为单例。* 给定的实例应该完全初始化,注册表不会执行任何初始化回调(特别地,不会调用 InitializingBean 的 afterPropertiesSet 的方法)。给定的实例不会接收任何破坏回调(像 DisposableBean 的 destroy 方法)。* 在完整的 BeanFactory 中运行时:如果 bean 应该接收初始化和 / 或销毁回调,则注册 bean 定义而不是现有实例。* 通常在注册表配置期间调用,但也可用于单例的运行时注册。因此,注册表实现应该同步单例访问; 如果它支持 BeanFactory 对单例的延迟初始化,它将无论如何都必须这样做。* @param beanName 实例名称
     * @param singletonObject 存在的单例对象
     */
    void registerSingleton(String beanName, Object singletonObject);

    /**
     * 返回在给定名称下注册的(原始)单例对象。* 只检查已经实例化的单例;但是不返回没有实例化的单例 bean 对象。* 这个方法的主要目的是去访问手动注册的单例。* 也可以用来以原始方式访问已经创建的 bean 定义定义的单例。注意:此查找方法不知道 FactoryBean 前缀或别名。在获取单例之前,需要首先解析规范 bean 名称实例。* @param beanName 查找的 bean 的名称
     * @return 返回注册的单例对象,或者 Null。* @return the registered singleton object, or {@code null} if none found
     */
    @Nullable
    Object getSingleton(String beanName);

    /**
     * 检查注册表中是否包含给定名称的单例实例。* 只检查已经实例化的单例,对没有实例化的单例 bean 定义不返回 true。* 这个方法的主要目的是去检查手动注册的单例。* 也可以用来检查一个单例是否由已经创建的 bean 定义所定义的。* 调用 ListableBeanFactory 的 containsBeanDefinition 方法检查一个 bean 工厂是否包含给定名字的 bean 定义。调用 containsBeanDefinition 和 containsSingleton 回答一个指定的 bean 工厂是否包括给定名称的本地 bean 实例。* 使用 BeanFactory 的 containsBean 进行常规检查,bean 工厂是否知道具有给定名称的 Bean(无论是手动注册的单例 bean 或是由 bean 定义创建的)。也检查祖先工厂。* 注意:此查找方法不知道 FactoryBean 前缀或别名。在检查单例状态之前,您需要首先解析规范 bean 名称。* @param beanName 查找的 bean 的名称
     * @return 返回 bean 工厂是否包含给定名称的单例实例。*/
    boolean containsSingleton(String beanName);

    /**
     * 返回在此注册表中注册的单例 bean 的名称。仅检查已实例化的单例; 不返回尚未实例化的单例 bean 定义的名称。此方法的主要目的是检查手动注册的单例。也可以被用来检查由已经创建的 bean 定义所定义的单例。* @return 返回名字集合作为字符串数组
     */
    String[] getSingletonNames();

    /**
     * 返回在此注册表中注册的单例 bean 的数量。仅检查已实例化的单例;不计算尚未实例化的单例 bean 定义。此方法的主要目的是检查手动注册的单例。也可以被用来计算由已经创建的 bean 定义所定义的单例的数量。* @return 返回单例 bean 的数量
     */
    int getSingletonCount();

    /**
     * 返回此注册表使用的单例互斥锁(适用于外部协作者)。* @return 返回互斥对象,不返回 Null。* @since 4.2
     */
    Object getSingletonMutex();}

正文完
 0