可用以下代码理解容器创建过程:
ClassPathResource resource = new ClassPathResource("applicationContext.xml"); DefaultListableBeanFactory factory = new DefaultListableBeanFactory(); XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(factory); reader.loadBeanDefinitions(resource);
ClassPathResource的构造参数为路径下的文件名,不带有"classpath:"
import信息:
import org.springframework.beans.factory.support.DefaultListableBeanFactory; import org.springframework.beans.factory.xml.XmlBeanDefinitionReader; import org.springframework.core.io.ClassPathResource;
通过factory对象来使用DefaultListableBeanFactory这个IoC容器,在使用IoC容器时,需要如下几个步骤:
1.创建IoC配置文件的抽象资源,这个抽象资源包含了BeanDefiniion的定义信息
2.创建一个BeanFactory,这里使用DefaultListableBeanFactory
3.创建一个载入BeanDefinition的读取器,这个使用XmlBeanDefinitionReader来载入XML文件形式的BeanDefinition,通过一个回调配置给BeanFactory。
4.从定义好的资源位置读入配置信息,具体的解析过程有XMLBeanDefinitionReader来完成。完成整个载入和注册Bean定义之后,需要的IoC容器就建立起来了。这个时候就可以直接使用IoC容器了。
其他的IoC容器创建过程类似
这里参鉴《SPRING技术内幕:深入解析SPRING机构与设计原理》一书。