序言
无论是工作还是面试,少不了Spring相关的知识,例如spring的IOC原理,我们在工作中利用spring提供的接口做一些事情,例如InitializingBean接口,通过实现该接口,在实例化本类结束后,调用该实现方法,做一些后续的处理。在面试过程中,也会时常被问及到IOC相关的知识,既然这块知识如此重要,那么我们有必要对其深入到源码中揭开他的面纱。
正文
先看一张图,bean的Diagrams图
IOC分析的入口是ClassPathXmlApplicatonContext的构造方法
我们重点分析bean的创建初始化refresh()方法
这是整个处理流程,我们再看下详细的处理流程
prepareRefresh()处理
obtainFreshBeanFactory()
postProcessBeanFactory()处理流程
prepareBeanFactory()处理流程
invokeBeanFactoryPostProcessors()处理流程
registerBeanPostProcessors()处理流程
initMessageSource() 处理流程
initApplicationEventMulticaster()处理流程
registerListeners()处理流程
finishBeanFactoryInitialization()处理流程
finishRefresh()处理流程
上述即是所有的流程,由于平台对图片限制比较大,这里提供一个完整流程