Es kann oft nützlich sein Containerdefinitionen in mehrere aufzuteilen XML-Dateien. Eine Möglichkeit, einen Anwendungskontext zu laden, der ist, der aus all diesen XML Fragmenten konfiguriert ist, besteht darin, die Anwendung Kontextkonstruktor zu verwenden, die mehrere Ressourcenstandorte benötigt. Mit einer Bohnenfabrik kann ein Bean-Definitionsleser mehrfach verwendet werden, um nacheinander die Definitionen aus jeder Datei zu lesen.
Im Allgemeinen zieht der Frühling Team die obigen Ansatz, da es hält Container-Konfigurationsdateien nicht bewusst der Tatsache, dass sie mit anderen kombiniert werden. Ein alternativer Ansatz besteht darin, ein oder mehrere Vorkommen des Elements zu verwenden, um Bean Definitionen aus einer anderen Datei (oder Dateien) zu laden. Lassen Sie uns ein Beispiel aussehen:
<import resource="services.xml"/>
<import resource="resources/messageSource.xml"/>
<import resource="/resources/themeSource.xml"/>
<bean id="bean1" class="..."/>
<bean id="bean2" class="..."/>
In diesem Beispiel externe Bohne Definitionen von 3 Dateien geladen werden, services.xml, messageSource.xml und themeSource .xml. macht den Import Alle Standortpfade werden die Definitionsdatei als relativ den Import zu tun, so services.xml in diesem Fall muss im selben Verzeichnis oder Classpath Speicherort wie die Datei, während messageSource.xml und themeSource .xml muss sich in einem Ressourcen-Verzeichnis unter dem Speicherort der Importdatei befinden. Wie Sie sehen können, ein führender Schrägstrich wird tatsächlich ignoriert, aber vorausgesetzt, dass diese als relative Pfade betrachtet werden, ist es wahrscheinlich besser Form, den Schrägstrich überhaupt nicht zu verwenden. Der Inhalt der zu importierenden Dateien muss gültige XML-Bean-Definition Dateien gemäß dem Spring Schema oder DTD sein, einschließlich der obersten Ebene Element.
Absolute Übereinstimmung mit den Spring-Dokumenten: Aggregation von Konfigurationsdateien schlägt jedes Mal explizite Importe. Wenn nichts anderes als für Unit-Tests. –