在最近的学习过程中,学到一个经验。就是学习一门技术、看一本书或文章时要先概览全貌,再去抠其细节。在读源码的时候也是这样,先看方法做了哪几个步骤,具体步骤里又做了哪些功能,这是后面再去看。
@Overridepublic Object getBean(String name) throws BeansException {return doGetBean(name, null, null, false);}
- 将入参
name转换为beanName - 通过
beanName去三级缓存中寻找对应的bean实例 - 若缓存中存在相应的bean实例,则通过bean实例获取相关的Object对象
 - 若缓存中不存在相应的bean实例
 - 情况1:目前的
BeanFactory中压根都没有BeanDefinition存在,则调用父级BeanFacorty去获取 - 情况2:目前的
BeanFactory中有相关BeanDefinition存在,则创建bean实例并移步到7 - 创建完bean实例后,和第3步一致,也通过bean实例获取相关的Object对象
 - 最后如果需要类型转换就进行类型转换
 
