Spring源碼之解析並註冊BeanDefinition(一)

最近有空把Spring加載bean流程複習了一下,也乘機可以做個整理.首先還是看下入口代碼,本文主要講解析及註冊BeanDefinition整體加載流程:

ClassPathXmlApplicationContext resource = new ClassPathXmlApplicationContext("app.xml");

ClassPathXmlApplicationContext的類圖繼承關係如下:

類圖可以方便的清楚該類的繼承關係,利於閱讀源碼. 一步步跟進去,AbstractApplicationContext中的refresh()方法,便是IOC容器初始化的入口,該方法中調用的obtainFreshBeanFactory()方法,是載入Bean定義的資源文件,該文是分析該類的調用流程,本文使用spring版本爲 4.2.4.RELEASE,obtainFreshBeanFactory()中調用了AbstractApplicationContext子類AbstractRefreshableApplicationContext#refreshBeanFactory中的refreshBeanFactory()方法,這是 委派設計模式,具體實現由子類做.下面是整個調用層次關係圖:

在DefaultListableBeanFactory類中的registerBeanDefinition方法內,註冊了BeanDefinition信息:

this.beanDefinitionMap.put(beanName, beanDefinition);

DefaultListableBeanFactory是Spring Bean加載中的核心類,現在不分析加載過程中細節,後面的章節會剖析.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章