/**
 * 以接口的方式,定义注册表共享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();

}

bluesnail95
69 声望6 粉丝

Java开发工程师


下一篇 »
BeanFactory