之前说过,对配置文件的解析包括对import,alias,bean,beans标签的处理现在已经完成了最核心的功能,其它三个的解析也是围绕着bean的解析来处理的。
-
对alias标签的解析
对bean进行定义时,除了用id来 指定名称外,为了提供多个名称,可以使用alias标签来指定。而所有这些名称都指向同一个bean。
在XML配置文件中,可用单独的<alias/>元素来完成bean别名的定义。如配置文件中定义了一个javaBean:
<bean id="testBean" class="com.test"/>
要给这个javaBean增加别名,以方便不同的对象来调用。我们可以直接使用bean标签中的那么属性:
<bean id="testBean" name="testBean,testBean2" class="com.test"/>
Spring还有另外一种声明别名的方式:
<bean id="testBean" class="com.test"/>
<alias name="testBean" alias="testBean,testBean2"/>
举个例子,组件A在XML配置文件中定义了一个名为componetA的DataSource类型的bean,但组件B却想在其XML文件中以componetB来命名引用此bean.而且主程序MyApp的xml配置中,希望以myApp的名字来引用此bean。最终容器加载3个XML生成最终的ApplicationContext.在此情形下,可通过配置文件中添加下列alias元素来实现:
<alias name="componentA" alias="componentB"/>
<alias name="componentB" alias="myApp"/>
这样一来,每个组件及主程序就可以通过唯一名字来引用同一个数据源而不互相干扰。
我们看下alias标签的解析过程:
-
对import标签的解析
对于Spring配置文件的编写,经历过大型项目的人都知道,里面有太多的配置文件了。基本采用的方式都是分模块,分模块的方式很多,使用import就是其中一种,例如我们可以构造这样的Spring配置文件:
applicationContext.xml文件中使用import方式导入有模块配置文件,以后若有新模块的加入,那就可以简单修改这个文件了。这样大大简化了配置后期维护的复杂度,并使配置模块化,易于管理。我们来看看Spring是如何解析import配置文件的呢。
-
对beans标签的解析
对于嵌入式的beans,解析与单独配置文件的解析没有太大却别,无非是调用beans的解析过程,不做多讲
下面会介绍一个非常复杂的过程,bean的加载,bean的加载要比bean的解析复杂的多。