深探spring系列-----ioc初始化(1)BeanDefinition的Resource定位

来源:互联网 发布:mac怎么复制粘贴 编辑:程序博客网 时间:2024/05/29 01:55

    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

阅读全文
0 0