Java
- 分类
- 分布式系统
- 难度
- 未设置
- 来源数
- 1
- 更新时间
- 2026/03/29 15:43
答案
首先会根据beanName遍历map,获得相应的BeanDefinition对象,去一级至三级缓存中依次查找,如果不存在则开始进行创建。通过定义的class,利用反射获得构造方法并创建实例,将beanName标记为创建中。如果此bean为正在创建中,则将其ObjectFactory放入三级缓存。然后对实例进行初始化,移除创建中标记,把实例放入一级缓存,移除二三级缓存中的实例,最后返回实例。
相关题目(5)
元信息
审核状态: active
关联来源: 1
来源面经题(0)
这道题目前没有手动沉淀的面经题来源。
来源(1)
Java八股(框架).md
knowledge_noteQuestion 18: getBean 的过程是什么?
Source answer: 首先会根据beanName遍历map,获得相应的BeanDefinition对象,去一级至三级缓存中依次查找,如果不存在则开始进行创建。通过定义的class,利用反射获得构造方法并创建实例,将beanName标记为创建中。如果此bean为正在创建中,则将其ObjectFactory放入三级缓存。然后对实例进行初始化,移除创建中标记,把实例放入一级缓存,移除二三级缓存中的实例,最后返回实例。
Reviewed answer: getBean 会先根据 beanName 查找 BeanDefinition,再按一级、二级、三级缓存尝试获取单例;若未命中则实例化、属性填充、初始化,最终放入一级缓存并返回。