概述
这篇文章主要是梳理Spring创建工厂、注册bean、实例化bean对象以及管理bean的过程
整体设计
类图
时序图
流程
-
创建工厂DefaultListableBeanFactory
-
注册bean(相关类信息),将注册的类信息放入DefaultListableBeanFactory的map中
-
通过bean工厂获取类的对象
调用继承了抽象类AbstractAutowireCapableBeanFactory继承的AbstractBeanFactory的getBean方法
从抽象类AbstractBeanFactory继承的DefaultSingletonBeanRegistry类的getSingleton方法获取类信息 -
存在的话返回
-
不存在的话从AbstractBeanFactory的子类DefaultListableBeanFactory中获取bean定义
-
从子类AbstractAutowireCapableBeanFactory中创建对象
实例化
将实例化后的对象放到继承的抽象类AbstractBeanFactory继承的DefaultSingletonBeanRegistry类中的map中
返回实例化后的bean -
返回bean对象
小结
遗留问题
为什么不在注册bean中,去实例化对象以及将对象放到DefaultSingletonBeanRegistry的map中?