ClassPathXmlApplicationContext的refresh() 方法負責完成了整個容器的初始化。
為什么叫refresh?也就是說其實是刷新的意思,該IOC容器里面維護了一個單例的BeanFactory,如果bean的配置有修改,也可以直接調用refresh方法,它將銷毀之前的BeanFactory,重新創建一個BeanFactory。所以叫refresh也是能理解的。
以下是Refresh的基本步驟:
1.把配置xml文件轉換成resource。resource的轉換是先通過ResourcePatternResolver來解析可識別格式的配置文件的路徑
(如"classpath*:"等),如果沒有指定格式,默認會按照類路徑的資源來處理。
2.利用XmlBeanDefinitionReader完成對xml的解析,將xml Resource里定義的bean對象轉換成統一的BeanDefinition。
3.將BeanDefinition注冊到BeanFactory,完成對BeanFactory的初始化。BeanFactory里將會維護一個BeanDefinition的Map。
http://www.iteye.com/topic/1113459