3.SimpleAliasRegistry的子类DefaultSingletonBeanRegistry分析

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_31307269/article/details/80506827

DefaultSingletonBeanRegistry继承了SimpleAliasRegistry并且实现了SingletonBeanRegistry接口,那接下来就看看SingletonBeanRegistry接口的作用吧

/ * *
为共享bean实例定义登记处的接口。
可以通过@link org.springframework.beans.factory.beanfactory实现。
为了公开他们的单例管理工具
以一种统一的方式。
*
@link org.springframework.beans.factory.config.ConfigurableBeanFactory接口扩展了这个接口。
*
* @author Juergen hoel
* @since 2.0
* @see ConfigurableBeanFactory
* @see org.springframework.beans.factory.support.DefaultSingletonBeanRegistry
* @see org.springframework.beans.factory.support.AbstractBeanFactory
* /
public interface SingletonBeanRegistry {

	/ * *
	在bean注册表中登记给定的现有对象,
	在给定的bean名称下。
	给定的实例应该被完全初始化;注册表
	不会执行任何初始化回调(特别是,它不会执行
	调用InitializingBean的@code afterproperties set方法)。
	给定的实例不会接收任何破坏回调
	(就像DisposableBean's {@code destroy} method方法一样)。
	当在一个完整的BeanFactory中运行时:注册一个bean定义
	如果您的bean应该接收,而不是现有的实例
	初始化和/或破坏回调。
	通常在注册表配置期间调用,但也可以使用
	对于单例的运行时注册。因此,一个注册表
	实现应该同步单例访问;这是必须的
	无论如何,如果它支持BeanFactory对单例的延迟初始化。
	@param beanName这个bean的名字
	@param singletonObject现有的单例对象
	* @see org.springframework.beans.factory.InitializingBean # afterPropertiesSet
	* @see org.springframework.beans.factory.DisposableBean #摧毁
	* @see org.springframework.beans.factory.support.BeanDefinitionRegistry # registerBeanDefinition
	* /
	void registerSingleton(String beanName, Object singletonObject);

	/ * *
	返回在给定名称下注册的(raw)单件对象。
	只是检查已经实例化的单件;不返回一个对象
	对于尚未实例化的单件bean定义。
	这个方法的主要目的是访问手动注册的单例
	*(见{ @link # registerSingleton })。也可以用来访问单例对象
	由一个已经被创建的bean定义定义,以一种原始的方式。
	注意:这个查找方法不知道FactoryBean前缀或别名。
	您需要在获得singleton实例之前首先解决规范的bean名称。
	@param beanName要查找的bean的名称
	如果没有找到注册的单例对象,或者@code null
	* @see ConfigurableListableBeanFactory # getBeanDefinition
	* /
	Object getSingleton(String beanName);

	/ * *
	检查这个注册表是否包含有给定名称的单件实例。
	只是检查已经实例化的单件;不返回@code true
	对于尚未实例化的单件bean定义。
	这个方法的主要目的是检查手动注册的单例
	*(见{ @link # registerSingleton })。也可以用来检查a
	由bean定义定义的单件已经创建。
	要检查一个bean工厂是否包含一个给定名称的bean定义,
	使用ListableBeanFactory的@code容器定义。叫两个
	@code容器定义和@code包含单例答案
	一个特定的bean工厂是否包含一个带有给定名称的本地bean实例。
	使用BeanFactory的@code容器来进行一般检查
	工厂知道一个有给定名称的bean(是否手工注册的单件
	实例或由bean定义创建),也检查祖先工厂。
	注意:这个查找方法不知道FactoryBean前缀或别名。
	在检查单件状态之前,您需要先解决规范的bean名称。
	@param beanName要查找的bean的名称
	如果这个bean工厂包含一个带有给定名称的单例实例
	* @see # registerSingleton
	* @see org.springframework.beans.factory.ListableBeanFactory # containsBeanDefinition
	* @see org.springframework.beans.factory.BeanFactory # containsBean
	* /
	boolean containsSingleton(String beanName);

	/ * *
	返回登记在该注册表中的单体bean的名称。
	只是检查已经实例化的单件;不返回名称
	对于尚未实例化的单件bean定义。
	这个方法的主要目的是检查手动注册的单例
	*(见{ @link # registerSingleton })。也可以用来检查哪些单例
	由bean定义定义的已经创建。
	将姓名列表作为字符串数组(从不@code null)返回
	* @see # registerSingleton
	* @see org.springframework.beans.factory.support.BeanDefinitionRegistry # getBeanDefinitionNames
	* @see org.springframework.beans.factory.ListableBeanFactory # getBeanDefinitionNames
	* /
	String[] getSingletonNames();

	/ * *
	返回注册在该注册表中的单体bean的数量。
	只是检查已经实例化的单件;不计数
	单例bean定义尚未实例化。
	这个方法的主要目的是检查手动注册的单例
	*(见{ @link # registerSingleton })。也可以用来计算
	由已经创建的bean定义定义的单例。
	@return单体bean的数量
	* @see # registerSingleton
	* @see org.springframework.beans.factory.support.BeanDefinitionRegistry # getBeanDefinitionCount
	* @see org.springframework.beans.factory.ListableBeanFactory # getBeanDefinitionCount
	* /
	int getSingletonCount();

}

SingletonBeanRegistry此接口是为了统一单例bean的管理的接口

DefaultSingletonBeanRegistry继承了SimpleAliasRegistry并且实现了SingletonBeanRegistry接口,那么DefaultSingletonBeanRegistry就拥有了 单例bean的注册和 别名的功能

猜你喜欢

转载自blog.csdn.net/qq_31307269/article/details/80506827