У меня есть проект весеннего веб-приложения, основанный на войне, который имеет несколько файлов jar. Я использую maven setup для сборки банок и файла войны. Каждый файл jar имеет набор компонентов, которые необходимо загрузить, и я не могу этого сделать.
В каждом файле jar я определил файл beans.xml. Но бобы не загружаются автоматически. Я попытался загрузить файл beans.xml из: a) src/main/resources b) src/main/resources/META-INF c) src/main/resources/META-INF/spring Это не работает.
Мой вопрос: как подготовить контекст приложения для таких сценариев? Военное приложение с несколькими банками.
Если вы упаковываете свое приложение в качестве веб-приложения, вы можете просто добавить файл с именем yourservletname -servlet.xml и включить все ресурсы из ваших файлов jar с помощью элемента <import/>
.
Spring, за кулисами, сканирует файл, упомянутый выше, по умолчанию, включая все бобы, объявленные в импортированных файлах.
Вот как должно выглядеть ваше имя сервлета -servlet.xml (объявление пространства имен xml и объявления схем для краткости для краткости):
<beans>
<import resource="classpath:/META-INF/beans.xml"/>
</beans>
Я предлагаю использовать META-INF в качестве вашего файла конфигурационных файлов контекста.
Это сканирует все файлы декларации bean с именем beans.xml в папке META-INF под корнем вашего пути к классам, который предполагает, что эти файлы должны находиться в src/main/resources/META-INF/в вашей структуре проекта при использовании Maven как вашего (так что они могут быть скопированы непосредственно под jar_root_path/META-INF/).
В противном случае, если вы не используете файл по умолчанию -servlet.xml, вы можете указать дескриптор настраиваемого контекста приложения, используя contextConfigLocation
следующим образом:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>application-context.xml</param-value>
</context-param>
Попробуйте просто
Где каждая банка содержит файл beans.xml в папке META-INF. Он сканирует каждую банку и загружает файл beans.xml и создает компоненты на основе этих файлов XML.
Вы упоминаете beans.xml, это проект CDI или стандартный проект Spring?
Используя maven, все под src/main/resources будет упаковано на верхнем уровне вашего JAR. Поэтому, если у вас есть файл в src/main/resources/META-INF/beans.xml, вы должны загрузить его с помощью "/META-INF/beans.xml" или определить его в своем весеннем контексте как "classpath: /META -INF/beans.xml".