Spring源码学习之XmlBeanFactory的实现

我们在使用spring框架中,XmlBeanFactory是我们熟悉的,看spring的源码的XmlBeanFactory.class中我们可以看到其中的注释是Rod Johnson在2001年就写下了,可见XMLBeanFactory是spring框架中的元老类了。源码如下图所示:

Spring源码学习之XmlBeanFactory的实现_第1张图片

XmlBeanFactory继承自DefaultListableBeanFactory这个类,这个类非常重要,是我们经常使用的一个IoC容器的实现,它包含了基本IoC容器所具有的重要功能,在spring中,其实是把DefaultListableBeanFactory作为一个功能完整的IoC容器来使用的。XMLBeanFactory继承自DefaultListableBeanFactory基本功能的同时,自己本身也拓展了一下新的功能,即可以读取一个以xml文件形式定义的IoC容器。下面就说一说读取xml文件形式是怎么实现的:

对xml文件的读取并不是由XmlBeanFactory直接实现的,在XmlBeanFactory类中定义了一个XMLBeanDefinitionReader,xml文件的处理就在这个reader对象中。

在XMLBeanFactory.class中我们能看到有XmlBeanFactory(Resource re)和XmlBeanFactory(Resource re。BeanFactory parentBeanFactory)两个构造方法,可见构造XMLBeanFactory这个容器时,需要指定BeanDefinition的信息来源,而且这个信息来源需要封装到Spring中的Resource类中(spring中用来封装I/O操作的类),比如,我们的BeanDefinition信息是以XML文件形式存在的,那么可以使用像 ClassPath-Resourceres = new ClassPathResource(“beans.xml”>;” 将Resource作为XMLBeanFactory构造方法的参数传入进去,这样IoC容器就可以方便的定位到需要的BeanDefinition信息来对Bean完成容器的初始化和依赖注入。



你可能感兴趣的:(Spring源码学习之XmlBeanFactory的实现)