Як імпортувати spring-config.xml одного проекту в spring-config.xml іншого проекту?


75

У мене є два проекти з назвою simple-core-implта simple-core-web.

Обидва проекти є spring basedі обоє мають батьківську назву проекту simple-core.

У мене simple-impl-config.xmlв simple-core-implпроекті і simple-web-config.xmlв simple-impl-config.xml.

У мене є бін, який має клас: simple serviceякий має один метод, який повертає мені повідомлення "привіт Світ".

Я хочу імпортувати файл simple-impl-config.xmlin, simple-web-config.xmlщоб bean був доступний до мого контролера, який знаходиться в simple-core-webпроекті.

simple-core-webпроект має банку simple-core-implпроекту.

Тож скажіть, будь ласка, як я можу імпортувати spring-config.xmlодин проект в spring-config.xmlінший проект, щоб усі компоненти першого були доступні в інший проект, просто імпортуючи?

Я не хочу переписувати всі боби.


Майбутні читачі, якщо у вас є проблема "Я думаю, що те, що я написав, має спрацювати", також перегляньте цю помилку зі статусом "статус = відхилено". github.com/spring-projects/spring-framework/issues/16017 На всякий випадок, якщо URL-адреса коли-небудь врешті-решт не вдасться, заголовок повідомлення про помилку - "Імпорт XML-файлу з кореня файлу JAR із підстановкою шлях до класу та підстановкою. не працює [SPR-11390] "
granadaCoder

Відповіді:


120
<import resource="classpath:spring-config.xml" />

Довідково:


І якщо у мене така сама ситуація, але лише з використанням анотованих класів конфігурації замість spring-config.xml, що я можу зробити?
Адіцу

@Aditzu використовуйте @Importдля імпорту інших своїх @Configurationкласів.
Шон Патрік Флойд

62

Невеликий варіант відповіді Шона:

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

Зірочкою для весняного пошуку файлів 'spring-config.xml' в будь-якому місці шляху до класу.

Ще одне посилання: Розділіть конфігурацію Spring на кілька проектів

Весняна різниця префіксу шляху до класу


чи classpath *: застосовується, якщо всередині іншого модуля?
jpganz18

1
Зверніть увагу, що використання * не викликає помилок, якщо в шляху до класу знайдено 0 файлів.
Адітя Гупта,

10

З якихось причин імпорт, як запропонував Рікардо, для мене не спрацював. Я отримав це, працюючи з наступним твердженням:

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


6

Ось приклад на основі анотацій:

@SpringBootApplication
@ImportResource({"classpath*:spring-config.xml"})
public class MainApplication {

    public static void main(String[] args) {
        SpringApplication.run(MainApplication.class, args);
    }
}

1

Вам потрібно додати jar / war модуля B в модуль A і додати шлях до класу у вашому новому файлі spring-module. Просто додайте цей рядок

spring-moduleA.xml - це файл у модулі A, що знаходиться в папці ресурсів. Додавши цей рядок, він імпортує все визначення компонента з модуля A в модуль B.

МОДУЛЬ B / spring-moduleB.xml


import resource="classpath:spring-moduleA.xml"/>

<bean id="helloBeanB" class="basic.HelloWorldB">
  <property name="name" value="BMVNPrj" />
</bean>

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

Це найбільш підходящий для конфігурації шляху класу. Зокрема, коли ви шукаєте файли .xml в іншому проекті, який знаходиться у шляху до вашого класу.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.