哈哈,原来IOC容器的bean是存在DefaultSingletonBeanRegistry的一个Map类型的属性当中。
2024-09-03 08:43:04
经过查看源代码发现IOC容器中的bean实例(不知道是不是所有的bean)是存储在一个DefaultSingletonBeanRegistry类实例的一个Map类型的属性当中。
下面是DefaultSingletonBeanRegistry类的定义:
//类定义
public class DefaultSingletonBeanRegistry extends SimpleAliasRegistry implements SingletonBeanRegistry {
下面是这个类中的一个属性:
/** Cache of singleton objects: bean name --> bean instance */
//生成的bean将存储在这个属性中。初始容量为256的Map对象。
private final Map<String, Object> singletonObjects = new ConcurrentHashMap<String, Object>(256);
下面是DefaultSingletonBeanRegistry类的一个方法,这个方法添加bean实例到一个Map属性中。
/**
* Add the given singleton object to the singleton cache of this factory.
* <p>To be called for eager registration of singletons.
* @param beanName the name of the bean //
* @param singletonObject the singleton object
*/ protected void addSingleton(String beanName, Object singletonObject) {
synchronized (this.singletonObjects) {
//singletonObjects 是DefaultSingletonBeanRegistry类的一个Map类型的字段。把bean实例都添加到了Map对象中。
this.singletonObjects.put(beanName, (singletonObject != null ? singletonObject : NULL_OBJECT));
this.singletonFactories.remove(beanName);
this.earlySingletonObjects.remove(beanName);
this.registeredSingletons.add(beanName);
}
}
最新文章
- (转) Artificial intelligence, revealed
- RVM 多版本Ruby管理-Gentoo
- Bzoj1449 [JSOI2009]球队收益
- Oracle中定义package以及存储过程的使用
- dtrace4linux
- careercup-中等难度 17.4
- 【深度学习系列3】 Mariana CNN并行框架与图像识别
- 使用react-native做一个简单的应用-02项目搭建与运行
- PHP的简单易懂文件管理,可实现基本功能
- android.util.Log常用方法
- 如何获取Azure Storage Blob的MD5值
- PyCharm 如何安装python第三方库及插件
- SQLServer复习文档1(with C#)
- pcre和正则表达式的误点
- Android APP应用启动页白屏(StartingWindow)优化
- as项目找不到id
- Spring配置从配置文件读取属性值
- Docker数据卷Volume实现文件共享、数据迁移备份(三)--技术流ken
- Javascript高级编程学习笔记(12)—— 引用类型(1)Object类型
- python联系题1