单例Bean注册表接口SingletonBeanRegistry

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)
 *
 * 

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. *

他给出的实例应该被完全初始化; * 注册表不会执行任何初始化回调(特别是,它不会调用InitializingBean的{@code afterPropertiesSet}方法) * 给定的实例不会收到任何销毁回调 *(比如,DisposableBean's {@code destroy} 方法) *

在完整的BeanFactory运行时: * 如果你的bean应该接收initialization或者destruction回调, * 注册bean定义而不是一个现有的实例 *

通常在注册表配置期间调用, * 但也可以用于单例的运行时注册 * 因此,注册表实现应该同步单例访问 * 如果它支持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); /** * 返回在给定名称下注册的(原始)单例对象 *

只检查已经实例化的单例; * 没有为 尚未实例化的单例bean定义 返回一个对象. *

此方法的主要目的是访问手动注册的单例 * (see {@link #registerSingleton}). * 也可以用于以原始的方式 访问已经创建的bean定义的单例 *

NOTE: 此查找方法不知道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); /** * 检查此注册表是否包含具有特定名称的单例实例 *

仅检查已经实例化的单例; does not return {@code true} * 对于尚未初始化的单例bean定义,不返回{@code true}. *

此方法的主要目的是检查手动注册的单例 * (see {@link #registerSingleton}). * 也可以用来检查一下已经创建了由bean定义的单例 *

要检查bean工厂是否包含具有给定名称的bean定义, * 使用 ListableBeanFactory's {@code containsBeanDefinition}. 同时调用 * {@code containsBeanDefinition} and {@code containsSingleton} * 就可以回答一个特定的bean工厂是否包含 * 具有给定名称的本地bean实例 *

使用 BeanFactory's {@code containsBean} 来大体上检查工厂是否知道具有给定名称的bean * (无论是手动注册的单例实例还是bean定义创建的), * 也检查祖先工厂. *

NOTE: 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的名称 *

只检查已经实例化的单例;不返回尚未实例化的单例bean定义的名称 *

此方法的主要目的是检查手动注册的单例(请参阅{@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的数量 *

只检查已经实例化的单例; 不计算尚未实例化的单例bean定义 *

此方法的主要目的是检查手动注册的单例实例 * (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(); }

转载于:https://www.cnblogs.com/zaid/p/11173570.html

你可能感兴趣的:(单例Bean注册表接口SingletonBeanRegistry)