IOC初始化构造
IOC容器的构建归为以下三步:
1. Bean定义资源文件的定位
2. Bean定义资源文件的载入
3. Bean定义的注册
Spring构造IOC容器,可以用一行代码完成:
XmlBeanFactory factory = new XmlBeanFactory(new ClassPathResource("beans.xml"));
这行代码简单却不明了,我们将他拆分为多行代码,可以清晰明了的了解Spring是如何构建IOC容器的代码如下所示:
ClassPathResource resource = new ClassPathResource("beans.xml");
DefaultListableBeanFactory factory = new DefaultListableBeanFactory();
XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(factory);
reader.loadBeanDefinitions(resource);
从而可以将IOC容器的构建归为以下六步
- 定义好Spring的配置文件。
- 通过Resource对象将Spring配置文件进行抽象,抽象成一个Resource对象。
- 定义好Bean工厂。
- 定义好XmlBeanDefinitionReader对象,并将工厂作为参数传递进去供后续回调使用。
- 通过XmlBeanDefinitionReader对象读取之前抽象出的Resource对象(包含了XML文件的解析过程)。本质上,XML文件的解析是由XmlBeanDefinitionReader交由BeanDefinitionParserDelegate委托来完成(用到了委托模式)
- IoC容器创建完毕,用户可以通过容器获取到所需的对象信息。