Часто бывает полезно разделить определения контейнеров на несколько XML-файлов. Один из способов затем загрузить контекст приложения, настроенный из всех этих XML-фрагментов, — использовать конструктор контекста приложения, который принимает несколько местоположений ресурсов. С помощью фабрики компонентов средство чтения определений компонентов можно использовать несколько раз для чтения определений из каждого файла по очереди.
Как правило, команда Spring предпочитает описанный выше подход, поскольку файлы конфигурации контейнера остаются в неведении о том, что они объединяются с другими. Альтернативный подход заключается в использовании одного или нескольких вхождений элемента для загрузки определений bean-компонентов из другого файла (или файлов). Давайте посмотрим на образец:
<import resource="services.xml"/>
<import resource="resources/messageSource.xml"/>
<import resource="/resources/themeSource.xml"/>
<bean id="bean1" class="..."/>
<bean id="bean2" class="..."/>
В этом примере определения внешних компонентов загружаются из трех файлов: services.xml, messageSource.xml и themeSource.xml. Все пути расположения рассматриваются относительно файла определения, выполняющего импорт, поэтому services.xml в этом случае должен находиться в том же каталоге или пути к классам, что и файл, выполняющий импорт, а messageSource.xml и themeSource.xml должны находиться в ресурсах. расположение ниже расположения импортируемого файла. Как видите, косая черта в начале фактически игнорируется, но, учитывая, что они считаются относительными путями, вероятно, лучше вообще не использовать косую черту. Содержимое импортируемых файлов должно быть действительными файлами определений компонентов XML в соответствии со схемой Spring или DTD, включая элемент верхнего уровня.