上一篇我们梳理了容器初始化的整体流程,了解了一个 bean 是如何从静态配置变为一个可运行的实例的,但是对于过程中涉及到的具体细节并未进行深入探究。从本篇开始,我们将回到起点重新沿着主线走一遍,与之前不同的是,这一次我们更加关注细节。
由前面的分析我们已经大致知晓 IoC 容器在初始化期间主要分为两个阶段:加载并解析配置文件和初始化 bean 实例。本文所要介绍的对于默认标签的解析发生在加载并解析配置文件阶段,以 XML 配置为例,容器会将 XML 形式的静态配置解析成对应的 BeanDefinition 对象注册到容器中。在配置方面,Spring 为开发者提供了许多可用的标签,比如 <beans />、<bean />、<import />,以及 <alias /> 等等。这些标签统称为 默认标签 (个人觉得翻译成内置标签更加合理),同时 Spring 还允许开发者自己定义标签,方法 DefaultBeanDefinitionDocumentReader#parseBeanDefinitions 中的逻辑就是判断当前标签是默认标签还是自定义标签,并调用相应的方法对标签进行解析(实现如下),本篇我们主要分析默认标签的解析过程,对于自定义标签则留到下一篇进行讲解。