BeanFactory
创建及预准备
1、创建Spring容器对象
2、调用refresh()
方法刷新容器
refresh()
方法会在刷新前,调用prepareRefresh()
方法进行刷新前的预处理工作
prepareRefresh()
方法会调用initPropertySources()
方法初始化一些属性设置
执行完initPropertySources()
方法初始化属性之后,还可以调用validateRequiredProperties()
方法进行属性的合法校验
最后prepareRefresh()
方法还会创建一个事件集合,保存容器中一些早期的事件,当事件派发器创建出来的时候,就会立即派发这些早期的事件
3、refresh()
方法执行完刷新前的预处理之后,会调用obtainFreshBeanFactory()
方法获取BeanFactory
obtainFreshBeanFactory()
方法会首先调用refreshBeanFactory()
刷新BeanFactory
refreshBeanFactory()
会创建一个DefaultListableBeanFactory
对象,并设置id
obtainFreshBeanFactory()
然后调用getBeanFactory()
获取刚才创建出的DefaultListableBeanFactory
实例对象,然后将这个BeanFactory
对象返回
3、refresh()
方法调用prepareBeanFactory(beanFactory)
方法执行BeanFactory
的预准备工作,对BeanFactory
进行一些设置
prepareBeanFactory(beanFactory)
方法会进行一些配置
4、refresh()
方法调用postProcessBeanFactory(beanFactory)
方法,BeanFactory
准备工作完成后进行后置处理工作
子类通过重新这个方法来在BeanFactory
创建并预准备完成以后来做进一步的设置
以上,完成了BeanFactory
的创建以及预准备工作。