Wie importiere ich spring-config.xml eines Projekts in spring-config.xml eines anderen Projekts?


75

Ich habe zwei Projekte mit dem Namen simple-core-implund simple-core-web.

Beide Projekte sind spring basedund beide haben einen übergeordneten Projektnamen simple-core.

Ich habe simple-impl-config.xmlim simple-core-implProjekt und simple-web-config.xmlin simple-impl-config.xml.

Ich habe eine Bohne mit Klasse: simple serviceDiese hat eine Methode, die mir die Nachricht "Hallo Welt" zurückgibt.

Ich mag , dass die importierenden simple-impl-config.xmlin der simple-web-config.xmlso die Bohne in meinen Controller zur Verfügung , die in ist simple-core-webProjekt.

simple-core-webProjekt hat ein Glas simple-core-implProjekt.

Sagen Sie mir also bitte, wie ich spring-config.xmlein Projekt in ein spring-config.xmlanderes Projekt importieren kann, damit alle Beans von first durch einfaches Importieren in ein anderes Projekt verfügbar sind.

Ich möchte nicht alle Bohnen neu schreiben.


Zukünftige Leser, falls Sie das Problem "Ich denke, was ich geschrieben habe, sollten funktionieren" haben, sehen diesen Fehler ebenfalls mit einem "Status = abgelehnt". github.com/spring-projects/spring-framework/issues/16017 Für den Fall, dass die URL irgendwann einmal ausfällt, lautet der Titel des Fehlerpostens "Importieren einer XML-Datei aus dem Stammverzeichnis einer JAR-Datei mit Platzhalterklassenpfad und Platzhalterpfad funktioniert nicht [SPR-11390] "
granadaCoder

Antworten:



62

Eine kleine Variation von Seans Antwort:

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

Mit dem Sternchen, um Suchdateien 'spring-config.xml' an einer beliebigen Stelle im Klassenpfad zu speichern.

Eine weitere Referenz: Teilen Sie die Spring-Konfiguration auf mehrere Projekte auf

Unterschied im Spring-Klassenpfad-Präfix


Gilt der Klassenpfad *:, wenn er sich in einem anderen Modul befindet?
jpganz18

1
Beachten Sie, dass die Verwendung von * keinen Fehler auslöst, wenn 0 Dateien im Klassenpfad gefunden werden.
Aditya Gupta

10

Aus irgendeinem Grund funktionierte der von Ricardo vorgeschlagene Import bei mir nicht. Ich habe es mit folgender Aussage zum Laufen gebracht:

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


6

Hier ist das auf Anmerkungen basierende Beispiel:

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

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

1

Sie müssen das jar / war des Moduls B in Modul A hinzufügen und den Klassenpfad in Ihre neue Spring-Modul-Datei einfügen. Fügen Sie einfach diese Zeile hinzu

spring-moduleA.xml - ist eine Datei in Modul A unter dem Ressourcenordner. Durch Hinzufügen dieser Zeile werden alle Bean-Definitionen von Modul A nach Modul B importiert.

MODUL 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" /> 

Dies ist am besten für die Konfiguration von Klassenpfaden geeignet. Insbesondere, wenn Sie in einem anderen Projekt, das sich in Ihrem Klassenpfad befindet, nach XML-Dateien suchen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.