单例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)
*
* <p>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.
* <p>他给出的实例应该被完全初始化;
* 注册表不会执行任何初始化回调(特别是,它不会调用InitializingBean的{@code afterPropertiesSet}方法)
* 给定的实例不会收到任何销毁回调
*(比如,DisposableBean's {@code destroy} 方法)
* <p>在完整的BeanFactory运行时:
* <b>如果你的bean应该接收initialization或者destruction回调,
* 注册bean定义而不是一个现有的实例</b>
* <p>通常在注册表配置期间调用,
* 但也可以用于单例的运行时注册
* 因此,注册表实现应该同步单例访问
* 如果它支持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);
/**
* 返回在给定名称下注册的(原始)单例对象
* <p>只检查已经实例化的单例;
* 没有为 尚未实例化的单例bean定义 返回一个对象.
* <p>此方法的主要目的是访问手动注册的单例
* (see {@link #registerSingleton}).
* 也可以用于以原始的方式 访问已经创建的bean定义的单例 * <p><b>NOTE:</b> 此查找方法不知道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);
/**
* 检查此注册表是否包含具有特定名称的单例实例
* <p>仅检查已经实例化的单例; does not return {@code true}
* 对于尚未初始化的单例bean定义,不返回{@code true}.
* <p>此方法的主要目的是检查手动注册的单例
* (see {@link #registerSingleton}).
* 也可以用来检查一下已经创建了由bean定义的单例
* <p>要检查bean工厂是否包含具有给定名称的bean定义,
* 使用 ListableBeanFactory's {@code containsBeanDefinition}. 同时调用
* {@code containsBeanDefinition} and {@code containsSingleton}
* 就可以回答一个特定的bean工厂是否包含
* 具有给定名称的本地bean实例
* <p>使用 BeanFactory's {@code containsBean} 来大体上检查工厂是否知道具有给定名称的bean
* (无论是手动注册的单例实例还是bean定义创建的),
* 也检查祖先工厂.
* <p><b>NOTE:</b> 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的名称
* <p>只检查已经实例化的单例;不返回尚未实例化的单例bean定义的名称
* <p>此方法的主要目的是检查手动注册的单例(请参阅{@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的数量
* <p>只检查已经实例化的单例; 不计算尚未实例化的单例bean定义
* <p>此方法的主要目的是检查手动注册的单例实例
* (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();
}
单例Bean注册表接口SingletonBeanRegistry的更多相关文章
- Spring(六)核心容器 - 注册单例 Bean 实例、SingletonBeanRegistry 简介
前言 上篇文章我们对注册 Bean 的核心类 BeanDefinitionRegistry 进行了讨论,这里的注册 Bean 是指保存 Bean 的相关信息,也就是将 Bean 定义成 BeanDef ...
- Spring IOC(三)单例 bean 的注册管理
Spring IOC(三)单例 bean 的注册管理 Spring 系列目录(https://www.cnblogs.com/binarylei/p/10198698.html) 在 Spring 中 ...
- 【Spring源码分析】非懒加载的单例Bean初始化过程(下篇)
doCreateBean方法 上文[Spring源码分析]非懒加载的单例Bean初始化过程(上篇),分析了单例的Bean初始化流程,并跟踪代码进入了主流程,看到了Bean是如何被实例化出来的.先贴一下 ...
- 【Spring源码分析】非懒加载的单例Bean初始化前后的一些操作
前言 之前两篇文章[Spring源码分析]非懒加载的单例Bean初始化过程(上篇)和[Spring源码分析]非懒加载的单例Bean初始化过程(下篇)比较详细地分析了非懒加载的单例Bean的初始化过程, ...
- Spring IOC 容器源码分析 - 创建单例 bean 的过程
1. 简介 在上一篇文章中,我比较详细的分析了获取 bean 的方法,也就是getBean(String)的实现逻辑.对于已实例化好的单例 bean,getBean(String) 方法并不会再一次去 ...
- Spring源码分析:非懒加载的单例Bean初始化前后的一些操作
之前两篇文章Spring源码分析:非懒加载的单例Bean初始化过程(上)和Spring源码分析:非懒加载的单例Bean初始化过程(下)比较详细地分析了非懒加载的单例Bean的初始化过程,整个流程始于A ...
- Spring源码分析:非懒加载的单例Bean初始化过程(下)
上文Spring源码分析:非懒加载的单例Bean初始化过程(上),分析了单例的Bean初始化流程,并跟踪代码进入了主流程,看到了Bean是如何被实例化出来的.先贴一下AbstractAutowireC ...
- Spring 源码学习 - 单例bean的实例化过程
本文作者:geek,一个聪明好学的同事 1. 简介 开发中我们常用@Commpont,@Service,@Resource等注解或者配置xml去声明一个类,使其成为spring容器中的bean,以下我 ...
- Spring源码解析之八finishBeanFactoryInitialization方法即初始化单例bean
Spring源码解析之八finishBeanFactoryInitialization方法即初始化单例bean 七千字长文深刻解读,Spirng中是如何初始化单例bean的,和面试中最常问的Sprin ...
随机推荐
- ASP.NET MVC Liu_Cabbage 个人博客
RightControl_Blog 介绍 前台使用燕十三博客前端模板,后台基于RightControl .NET通用角色权限管理系统搭建,已完成.项目地址:http://www.baocaige.to ...
- django2为什么要用序列化
https://www.jianshu.com/p/1e404604d5c3 结论:如果没用序列化,Django默认将数据进行多次转换才能提取我们所需数据,出现关联时我们还需进一步对数据进行查询,操作 ...
- 6-修改虚拟机的SID(sysprep)
一.注意点 1.这种错误一般会出现在克隆的机器里,导致在加入域的时候,报SID一致,加入失败,如下图: 2.使用sysprep修改完之后,需要重启服务器,并且重新配置,重新配网络: 3.如果修改SID ...
- php基本语法形式
站长新闻: 备注:目前有很多人通过李书记博客找到我,请教各种关于问题,而我这段时间是比较忙的,有时候真的是有心无力,网站更新也少了,希望大家见谅!还有很多phper希望我找下关于php相关的技术文档我 ...
- 2019HDU多校Minimal Power of Prime——分段讨论&&思维
题目 将 $n$($1 < n \leq 10^{18}$)质因数分解,求质因数幂的最小值. 分析 直接质因数分解,不太行. 可以这样想,对小区间质因数分解,n变小了,再枚举答案. 打印1-10 ...
- JUC-12.4-execute和sumbit的区别
在Executor接口中只定义了execute方法,而submit方法则是在ExecutorService接口中定义的. execute没有返回值,而submit有返回值. 转自: https://w ...
- 利用前端三大件(html+css+js)开发一个简单的“todolist”项目
一.介绍 todolist,即待办事项.在windows android ios上参考微软家出的那个To-Do应用,大概就是那样的.我这个更简单,功能只有“待办” “已完成”两项,并且是在浏览器打开的 ...
- Print工具类
这篇文章已经废弃. 实际开发中,打印信息只会用日志框架(Log4j2). 受到Thinking in Java中静态引入(import static)的启发, Deolin也打算写一个方便自己的工具类 ...
- Dubbo——配置
一.配置原则 JVM 启动 -D 参数优先,这样可以使用户在部署和启动时进行参数重写,比如在启动时需改变协议的端口. XML 次之,如果在 XML 中有配置,则 dubbo.properties 中的 ...
- redis之基础命令
一.redis介绍 1.redis特性 Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库.缓存和消息中间件 redis是c语言编写的,支持数据持久化,是key-val ...