在上一篇博客《源码深度剖析Spring Bean标签的解析及注册》中描述了bean 标签的解析以及注册。 而Spring 的XML 配置文件职工包括import标签、alias标签、bean标签和beans 标签,那么这篇博客就针对剩余的import 标签 、alias标签进行处理。由于beans标签类似于import标签所提供的功能,再次就不在赘述了, 感兴趣的可以自行查看源码。
alias 标签处理
在对bean进行定义的时候, 除了使用id属性来指定名称之外,为了提供多个名称,可以使用alias标签来指定,而这些指定的名称都会指向同一个bean。在XML 配置文件中,可以单独使用标签来完成bean别名的定义,例如:
这样每个组件及主程序就可以通过唯一名称来引用同一个bean 而互不干扰了。 alias 的解析入口如下:
接下来就来看下是如何解析alias标签的。
从代码中可以得知,alias标签解析最终调用了bean标签中的alias标签解析,最终也是将alias 和beanName 组成一对注册至registry中。
import 标签处理
如果xml过于庞大的时候,可以把按照一定的规则拆分为多个xml,然后通过import 标签导入到主的XML 配置文件中, 例如:
通过import 标签导入有模块配置文件,在后续的开发中若有新的模块加入,就可以简单修改这个文件,可以大大简化配置后期维护的复杂度,使配置模块化,易于管理, spring解析import标签入口如下:
在解析import标签时,spring 通过以下6个步骤完成解析:
步骤一: 获取resource 属性所表示的路径
步骤二: 解析路径中的系统属性,
步骤三:判定location 是绝对路径还是相对路径;
步骤四: 如果是绝对路径则递归调用bean的解析过程,进行解析;
步骤五: 如果是相对路径则计算出绝对路径进行解析;
步骤六:通过监听器,解析完成。