深探spring系列-----ioc初始化(1)BeanDefinition的Resource定位
1.前言
ioc就不說了 大家都知道。不知道的童鞋可以出門右轉百度,google,簡書總有一款適合你!
說說BeanDefinition 這個是ioc非常重要一個元件,實際就是pojo物件在ioc中的抽象,通過這個BeanDefinition定義的資料結構,使ioc容器能夠方便的對pojo物件也 就是javabean執行管理.
大體意思是說BeanDefinition是java實體類在spring裡面的抽象.而BeanDefinition 的定位就是通過某種方式找到外部的資源 這個資源指的是類路徑下,io下或者 url.
2.xmlBeanFactory和FileSystemXmlApplicationContext
xmlBeanFactory是如何尋找Resource的呢?
在xmlBeanFactory中有一個XmlBeanDefinitionReader 他有一個loadBeanDefinitions方法通過這樣就尋找Resource了
而相對於beanfactory更高階的ApplicationContext 是如何尋找Resource呢
FileSystemXmlApplicationContext 相信大家都經常用用這個作為eg:
首先FileSystemXmlApplicationContext的繼承關係中他的根類AbstractApplicationContext繼承的DefaultResourceLoader
找到了我們根據路徑獲取Resource的方法也就是定義BeanDefinition在哪。
首先我們定義初始化FileSystemXmlApplicationContext時會有一個refresh的過程 ,這個過程就是ioc初始化的步驟
在這裡我們
通過這個方法找
這個方法相信大家都很熟悉 這個就是XmlBeanDefinitionReader 裡的方法
loadBeanDefinitions方法是一個模板模式基類裡面規定好了規則 由繼承的子類實現即可
傳送門模板模式傳送門 http://www.cnblogs.com/zuoxiaolong/p/pattern10.html