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.

Chitresh
quelle
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:

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

Referenz:

Sean Patrick Floyd
quelle
Und wenn ich die gleiche Situation habe, aber nur kommentierte Konfigurationsklassen anstelle von spring-config.xml verwende, was kann ich tun?
Aditzu
@Aditzu verwenden @Import, um Ihre anderen @ConfigurationKlassen zu importieren .
Sean Patrick Floyd
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

RicardoS
quelle
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" />

Yogesh
quelle
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);
    }
}
Devrim
quelle
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>
ajeetkg
quelle
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.

JitenS
quelle