天天看點

簡單的Spring的bean執行個體化過程

以XmlBeanFactory為例,最簡單的取bean方式是:

 Bean的配置檔案内容也很簡單:

先看起始點,載入先走AbstractBeanFactory

doGetBean方法中:

}

通過new ObjectFactory()的回調方法,回調目前類繼承的createBean方法,該方法在父類AbstractAutowireCapableBeanFactory中:

AbstractAutowireCapableBeanFactory->

進入AbstractBeanFactory中的protected Class resolveBeanClass方法:

轉入doResolveBeanClass:

AbstractBeanDefinition->resolveBeanClass

再來看forName做了些什麼

ClassUtils ->

最終将class load進來。

Bean執行個體化過程:

AbstractAutowireCapableBeanFactory->createBeanInstance

進入

AbstractAutowireCapableBeanFactory->instantiateBean

SimpleInstantiationStrategy->instantiate

再來看BeanUtils的執行個體化方法,比較簡單,直接用反射的構造函數來newInstance。

BeanUtils->