Spring构造bean和管理初始化生命周期的工作在AbstractAutowireCapableBeanFactory中处理,分为构造bean和后续管理bean初始化生命周期。
1. 构造bean
1.1方法调用图
构造bean的入口就是beanFactory的getBean()方法,实际调用defaultBeanFactory的getBean()方法。经过层层调用,直到AabstractAutowireCapableBeanFactory中。调用方法图如下:
3-6均在AbstractAutowireCapableBeanFactory完成。
1.2设计到的类图
涉及的类图继承关系如下:
在doCreateBean()中,createBeanInstance返回的是一个BeanWrapper
BeanWrapper提供了设置和获取属性值(单个的或者是批量的),获取属性描述信息、查询只读或者可写属性等功能,用getWrappedInstance()方法就可以得到这个封装的bean的实例。BeanWrapperImpl里面的Object就是BeanWrapper“包裹”的bean,通过getWrappedInstance()方法对外提供。
1.3方法分析
主要分析AbstractAutowireCapableBeanFactory中的方法,其它类中的方法都是对这里方法的封装。
A,BeanWrapper的获取
BeanWrapper提供了设置和获取属性值(单个的或者是批量的),获取属性描述信息、查询只读或者可写属性等功能,用getWrappedInstance()方法就可以得到这个封装的bean的实例。BeanWrapperImpl里面的Object就是BeanWrapper“包裹”的bean,通过getWrappedInstance()方法对外提供。
/**
* Return the bean instance wrapped by this object, if any.
* @return the bea