Как загрузить Spring Bean для нескольких файлов JAR в военном приложении

1

У меня есть проект весеннего веб-приложения, основанный на войне, который имеет несколько файлов 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 Это не работает.

Мой вопрос: как подготовить контекст приложения для таких сценариев? Военное приложение с несколькими банками.

  • 0
    или это возможно?
  • 0
    Как вы начинаете свой весенний контекст? Есть ли у Spring-файлов одно и то же имя? В вашем service.jar назовите свой контекст appContext-service.xml, в своем веб-приложении назовите appContext-web.xml и разместите их в одном месте. В вашем загрузчике контекста укажите местоположение с помощью classpath: appContext - *. Xml. Я думаю, что это должно работать, но не пробовал.
Показать ещё 2 комментария
Теги:
maven
spring
spring-mvc

3 ответа

2

Если вы упаковываете свое приложение в качестве веб-приложения, вы можете просто добавить файл с именем 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>
1

Попробуйте просто

Где каждая банка содержит файл beans.xml в папке META-INF. Он сканирует каждую банку и загружает файл beans.xml и создает компоненты на основе этих файлов XML.

0

Вы упоминаете 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".

Ещё вопросы

Сообщество Overcoder
Наверх
Меню