这在bean跨域多个XML文件的定义里面很有用。通常,在你的架构里一个独立的XML配置文件就代表一个逻辑层或是模型。
在上面的例子中,外部的bean是从这三个文件加载过来的:services.xml ,messageSource.xml , themeSource.xml。所有导入文件的定义都是用相对路径,所以,services.xml 必须在同一个路径下或类路径作为文件的导入路径(个人理解:大意是说这个文件需要在项目的根目录或是和某些文件在同一个根目录下)。messageSource.xml 和 themeSource.xml 一定是在资源目录下面的导入路径路径里。就和你看到的一样,一个反斜杠被忽略了,说明这些路径是相对的,不使用反斜杠是一种更好的形式。导入文件的内容,包括最高级别的 <beans/> 节点,根据Spring 架构都必须是有有效的 bean 定义。
你可以使用应用上下文的构造函数从所有的XML片段中加载 bean 定义。这些构造函数需要多个
Resource 位置,就像之前的章节写的那样。或者,使用一个或多个<import/>节点的事件从其他文件加载 bean定义。例如:
<beans>
<import resource="services.xml"/>
<import resource="resources/messageSource.xml"/>
<import resource="/resources/themeSource.xml"/>
<bean id="bean1" class="..."/>
<bean id="bean2" class="..."/>
</beans>
<import resource="services.xml"/>
<import resource="resources/messageSource.xml"/>
<import resource="/resources/themeSource.xml"/>
<bean id="bean1" class="..."/>
<bean id="bean2" class="..."/>
</beans>
注:不推荐,在父目录中使用相对路径 "../" 引用文件。这样在文件里创建的依赖性就不会在当前应用里。特别是,这些参考不推荐使用在“classpath:”URL里面(例 如:“classpath:..../service.xml”),在运行过程中先寻找最近的路径,再查找根目录。类路径配置的改变可能会导致选到错误的路径。
你可以充分利用好资源的位置,而不是相对路径:例如,“file:C:/config/service.xml”或者是"classpath:/config/service.xml"。但是,你要知道你的应用配置的绝对路径是耦合的,这样通常能保持一种更好的间接表达对这些绝对路径寻址,例如,通过"${.....}"占位符可以解决在运行时对 JVN系统性能的问题。