Обзор контейнера IoC Spring, создание контейнера: составление метаданных конфигурации на основе XML
Иногда бывает полезно, чтобы определения бинов охватывали несколько файлов XML. Часто каждый отдельный файл конфигурации XML представляет логический уровень или модуль в вашей архитектуре.
Вы можете использовать конструктор контекста приложения для загрузки определений бинов из всех этих фрагментов XML. Этот конструктор занимает несколько расположений ресурсов. Или используйте одно или несколько вхождений элемента <import/> для загрузки определений бина из другого файла или файлов. В следующем примере показано, как это сделать:
<beans>
<import resource="services.xml"/>
<import resource="resources/messageSource.xml"/>
<import resource="/resources/themeSource.xml"/>
<bean id="bean1" class="..."/>
<bean id="bean2" class="..."/>
</beans>
В предыдущем примере определения внешних компонентов загружаются из трех файлов: services.xml, messageSource.xml и themeSource.xml. Все пути расположения относятся к файлу определения, выполняющему импорт, поэтому services.xml должен находиться в том же каталоге или в каталоге пути к классу, что и файл, выполняющий импорт, тогда как messageSource.xml и themeSource.xml должны находиться в расположении ресурсов ниже расположения импортирующего файла. Как видите, ведущий слеш игнорируется. Однако, учитывая, что эти пути относительны, лучше не использовать косую черту вообще. Содержимое импортируемых файлов, включая элемент <beans/> верхнего уровня, должно быть допустимым определением XML-бина, согласно схеме Spring.
Можно, но не рекомендуется, ссылаться на файлы в родительских каталогах, используя относительный путь "../". Это создает зависимость от файла, который находится за пределами текущего приложения. В частности, эта ссылка не рекомендуется для URL-адресов classpath: (например, classpath:../services.xml), где процесс разрешения во время выполнения выбирает "ближайший" корень пути к классу и затем просматривает его родительский каталог. Изменения конфигурации пути к классам могут привести к выбору другого неправильного каталога.
Вы всегда можете использовать полностью определенные расположения ресурсов вместо относительных путей: например, файл: C:/config/services.xml или classpath:/config/services.xml. Однако имейте в виду, что вы связываете конфигурацию вашего приложения с определенными абсолютными местоположениями. Как правило, предпочтительно сохранять косвенность для таких абсолютных местоположений - например, через заполнители "${…}", которые разрешаются в отношении свойств системы JVM во время выполнения.
Само пространство имен обеспечивает функцию директивы импорта. Дополнительные возможности конфигурации, помимо определения простых компонентов, доступны в ряде пространств имен XML, предоставляемых Spring - например, пространства имен context и util.
Читайте также:
- Обзор контейнера IoC Spring, метаданные конфигурации
- Обзор контейнера IoC Spring, создание контейнера
- Обзор контейнера IoC Spring
Комментарии
Отправить комментарий