1. 程式人生 > >深探spring系列-----ioc初始化(1)BeanDefinition的Resource定位

深探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

3.獲得Resource

而這個方法裡就有我們最重要的Resource 這個getResource 大家可以看DefaultResourceLoader 裡面有獲取類路徑下的Resource,url下的Resource,以及其他ApplicationContext生成的不同的Resource