/**
* 以接口的方式,定义注册表共享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();
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。