Nicht in der Lage zu importieren, die Spring-bean-definition-Datei mit relativem Pfad

Ich bin neu auf Frühling und erbte ein Spring-Projekt, hatten alle die XML-Konfiguration in ProjectName/WebContent/WEB-INF/applicationContext.xml. Ich bin versucht zu brechen, die Konfiguration in verschiedenen Komponenten, so ist es einfacher zu ersetzen Dinge wie Datenquellen und Hibernate eine Konfiguration bei der Prüfung.

Hier ist meine Datei-Struktur:

ProjectName
  ->WebContent
      ->WEB-INF
          ->applicationContext.xml
          ->spring-datasource.xml
          ->spring-hibernate-properties.xml
          ->spring-persistence.xml
  ->test
      ->us.mn.k12... (Java pkgs with JUnit tests)
      ->spring-hsqldb-datasource.xml
      ->spring-test-bean-locations.xml
      ->spring-test-hibernate-properties.xml
  ->src
      ->us.mn.k12... (Java pkgs with production code)

In WEB-INF/applicationContext.xml ich importieren die folgenden:

<import resource="spring-datasource.xml"/> <!-- Production datasource -->
<import resource="spring-hibernate-properties.xml"/> <!-- Production hibernate properties -->
<import resource="spring-persistence.xml"/> <!--  DAO's, hibernate .hbm.xml mapping files -->

Funktioniert die Anwendung mit der oben genannten Konfiguration.

Meine JUnit-tests mit DbUnit und eine HSQLDB-Datenbank im Speicher zu verwenden. Also mein JUnit-test-Referenzen spring-test-bean-locations.xml im folgenden:

<import resource="spring-hsqldb-datasource.xml"/> <!-- HSQLDB datasource for test -->
<import resource="../WebContent/WEB-INF/spring-persistence.xml"/>  <!--  Production DAO's, hibernate .hbm.xml mapping files -->
<import resource="spring-test-hibernate-properties.xml"/> <!-- Hibernate properties for test -->

In dieser Weise kann ich angeben, Datenquelle test-und hibernate-Eigenschaften, aber die Wiederverwendung der Produktion mapping-Datei für die DAO, etc. Aber, ich erhalte eine Fehler mit meinem JUnit-test. Hier ist der relevante Teil der Ausnahme:

Caused by: org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Failed to import bean definitions from relative location [../WebContent/WEB-INF/spring-persistence.xml]
Offending resource: class path resource [spring-test-bean-locations.xml]; nested exception is org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [../WebContent/WEB-INF/spring-persistence.xml]; nested exception is java.io.FileNotFoundException: class path resource [../WebContent/WEB-INF/spring-persistence.xml] cannot be opened because it does not exist

Nun, wenn ich mich bewege spring-persistence.xml in /test, so dass ich nicht verwenden Sie den relativen Pfad, und verweisen Sie darauf mit <import resource="spring-persistence.xml"/>, dann die tests gut laufen. Also ich denke, der Inhalt meiner XML-Dateien sind OK, aber ich bin nicht richtig importieren mit einem relativen Pfad.

Gibt es etwas offensichtlich ich falsch mache mit meinem import von den relativen Pfad? Und vielleicht die wichtigere Frage ist, wie sieht das aus, eine angemessene Strategie für den Einbruch applicationContext.xml in Komponenten, um es einfacher zu machen für die Prüfung?

Dank!

InformationsquelleAutor buck64 | 2011-12-21
Schreibe einen Kommentar