以上笔记来源:
尚硅谷Spring零基础入门到进阶,一套搞定spring6全套视频教程(源码级讲解)https://www.bilibili.com/video/BV1kR4y1b7Qc
目录
2.1.1 底层是怎么创建对象的,是通过反射机制调用无参数构造方法吗?
一、前言
在之前的文章中,我们简要介绍了Spring的应用定位及特点,并使用IntelliJ IDEA编写了第一个Spring程序,接下来我们分析一下程序运行原理
二、程序分析
2.1.1 底层是怎么创建对象的,是通过反射机制调用无参数构造方法吗?
图2-1-1 覆盖系统默认的无参构造方法的HelloWorld实体类
图2-1-2 修改了HelloWorld类的无参构造方法的运行结果
从图2-1-1中,将HelloWorld类的无参构造方法进行了覆盖,添加了输出语句
运行结果如图2-1-2所示
综上所述,创建对象时确实调用了无参数构造方法。
2.1.2 Spring是如何创建对象的呢?原理是什么?
bean对象最终存储在spring容器中,在spring源码底层就是一个map集合,存储bean的map在DefaultListableBeanFactory类中:
图2-1-3 用来存储bean的map
如图2-1-3所示,Spring容器加载到Bean类时 , 会把这个类的描述信息, 以包名加类名的方式存到beanDefinitionMap 中, Map<String,BeanDefinition> , 其中 String是Key , 默认是类名首字母小写 , BeanDefinition , 存的是类的定义(描述信息) , 我们通常叫BeanDefinition接口为 : bean的定义对象。