Можно ли использовать XML-файл конфигурации Spring для каждого файла JAR с дополнительной информацией? - PullRequest
4 голосов
/ 05 января 2012

В моем основном XML-файле конфигурации Spring указано что-то вроде этого:

<context:component-scan base-package="com.application" />

Компоненты, найденные во время этого сканирования, могут находиться в одном из многих файлов jar на моем пути к классам. Я хотел бы иметь возможность иметь дополнительные XML-файлы конфигурации пружины в каждом jar-файле, которые предоставляют больше информации о каждом отдельном сервисе / компоненте (может быть, о некоторых свойствах и так далее), но я не хочу, чтобы эти вещи были тесно связаны с файл конфигурации основного приложения.

Есть ли способ сделать это, или мне не повезло?

В идеале я хотел бы иметь возможность каким-либо образом автоматически определять наличие файла XML в файле JAR на основе имени и / или местоположения в файле JAR.

Я знаю, что такие вещи можно сделать с помощью META-INF, но это далеко за пределами моей компетенции.

1 Ответ

6 голосов
/ 05 января 2012

В идеале я хотел бы иметь возможность каким-либо образом автоматически определять наличие файла XML в файле JAR на основе имени и / или расположения в файле JAR.

Да, это довольно просто.

В ваш основной контекстный файл Spring добавьте что-то вроде этого:

<import resource="classpath*:config.xml"/>

Обратите внимание на синтаксис подстановочного знака.Это отсканирует корень пути к классам в поисках любых ресурсов с именем config.xml и импортирует их в ваш основной контекст.

Таким образом, каждый из ваших JAR-файлов может иметь config.xml в своем корневом каталоге, ипросто так случится.Эти config.xml файлы могут, конечно, выполнять свой собственный импорт и т. Д.

...