Dokumentierte hier heißt es
Dieses spezielle Präfix gibt an, dass alle Klassenpfadressourcen, die dem angegebenen Namen entsprechen, abgerufen werden müssen (intern geschieht dies im Wesentlichen über einen Aufruf von ClassLoader.getResources (...)) und dann zusammengeführt werden, um die endgültige Anwendungskontextdefinition zu bilden.
Kann das jemand erklären?
Was ist der Unterschied zwischen der Verwendung classpath*:conf/appContext.xml
und der Verwendung classpath:conf/appContext.xml
ohne Sternchen ?
Antworten:
EINFACHE DEFINITION
Das
classpath*:conf/appContext.xml
bedeutet einfach, dass alle appContext.xml-Dateien unterconf
Ordnern in all Ihren Gläsern im Klassenpfad aufgenommen und zu einem großen Anwendungskontext zusammengefügt werden.Im Gegensatz dazu
classpath:conf/appContext.xml
wird nur eine solche Datei geladen ... die erste, die in Ihrem Klassenpfad gefunden wurde.quelle
Die
classpath*:...
Syntax ist vor allem dann nützlich, wenn Sie einen Anwendungskontext mithilfe der Platzhaltersyntax aus mehreren Bean-Definitionsdateien erstellen möchten.Wenn Sie beispielsweise Ihren Kontext mit
classpath*:appContext.xml
erstellen, wird der Klassenpfad nach jederappContext.xml
im Klassenpfad aufgerufenen Ressource durchsucht und die Bean-Definitionen von allen in einem einzigen Kontext zusammengeführt.Im Gegensatz
classpath:conf/appContext.xml
dazu erhalten Sie eine und nur eine Datei,appContext.xml
die vom Klassenpfad aufgerufen wird . Wenn es mehr als eine gibt, werden die anderen ignoriert.quelle
Klassenpfad *: Es bezieht sich auf eine Liste von Ressourcen und lädt alle im Klassenpfad vorhandenen Dateien. Die Liste kann leer sein. Wenn im Klassenpfad keine solche Datei vorhanden ist, löst die Anwendung keine Ausnahme aus (ignoriert nur den Fehler).
Klassenpfad: Er bezieht sich auf eine bestimmte Ressource und lädt nur die erste im Klassenpfad gefundene Datei. Wenn im Klassenpfad keine solche Datei vorhanden ist, wird eine Ausnahme ausgelöst
quelle
Resource
Ressource zu erstellen , da eine Ressource jeweils nur auf eine Ressource verweist." Außerdem habe ich gerade diesen seltsamen Fehler bekommen, so bin ich hier gelandet. Wenn Sie Ressourcen importieren möchten, ist es nicht sinnvoll, das Platzhalter-Klassenpfadpräfix zu verwenden.Der Quellcode von Spring:
quelle