一. bean对象最终存储在spring容器中,在spring源码底层就是一个map集合,存储bean的map在DefaultListableBeanFactory类中:
private final Map<String, BeanDefinition> beanDefinitionMap = new ConcurrentHashMap<>(256);
Spring容器加载到Bean类时 , 会把这个类的描述信息, 以包名加类名的方式存到beanDefinitionMap 中, Map<String,BeanDefinition> , 其中 String是Key , 默认是类名首字母小写 , BeanDefinition , 存的是类的定义(描述信息) , 我们通常叫BeanDefinition接口为 : bean的定义对象。
二.BeanDefinition是什么?
BeanDefinition在Spring中是用来描述Bean对象的,其不是一个bean实例,比如BeanDefinition中有个属性用来标记是单例还是多例
https://blog.csdn.net/u013409186/article/details/106757300/
三.Defaultlistablebeanfactory 和 ApplicationContext关系
-
beanDefinitionMap 和 Defaultlistablebeanfactory 关系
beanDefinitionMap 是 Defaultlistablebeanfactory 类的一个属性
https://blog.csdn.net/qq_43203949/article/details/124236224Defaultlistablebeanfactory 是 Beanfactory 的一个实现类
-
Defaultlistablebeanfactory 和 ApplicationContext 关系
https://blog.csdn.net/weixin_43888891/article/details/127837712 -
Map<String,Object> singletonObjects : 存储 所有的单例Bean。
这个可以通过DefaultListableBeanFactory类来获取:
https://www.cnblogs.com/chengxuxiaoyuan/p/16270369.html
四.BeanDefinition 和 ApplicationContext 的关系
https://www.jianshu.com/p/6cde22e9828e