Die Maven-Dateistruktur kann dabei helfen
Im Wesentlichen werden die Spring-Konfigurationsdateien (die übrigens einen beliebigen Namen haben können, nicht nur die generischen applicationContext.xml
) als Klassenpfadressourcen behandelt und unter abgelegt src/main/resources
. Während des Erstellungsprozesses werden diese dann in das WEB-INF/classes
Verzeichnis kopiert, in dem sich diese Dateien normalerweise befinden.
Variationen enthalten ein zusätzliches spring
Verzeichnis (z. B. src/main/resources/spring
), um die Spring-Kontexte von anderen Ressourcen für Anwendungsframeworks zu trennen. Möglicherweise möchten Sie die Anwendungskontexte in bestimmte Ebenen aufteilen, z.
example-servlet.xml
example-data.xml
example-security.xml
und so weiter.
Was ist mit verschiedenen Umgebungen wie dev / test / production?
In der Regel sollte Ihre Spring-Konfiguration die Umgebungskonfiguration aus ihrer, ahem, -Umgebung übernehmen. In der Regel bedeutet dies, dass Sie JNDI, JDBC, Umgebungsvariablen oder externe Eigenschaftendateien verwenden, um die erforderliche Konfiguration bereitzustellen. Ich liste diese nach Präferenz auf, da JNDI im Allgemeinen einfacher zu verwalten ist als externe Eigenschaftendateien in einem kontrollierten Produktionscluster.
Im Falle von Integrationstests müssen Sie möglicherweise eine reine Test-Spring-Konfigurationsdatei verwenden. Dies würde spezielle Kontexte enthalten, die Test-Beans oder Konfigurationen verwenden. Diese befinden sich unter src / test / resources und haben möglicherweise ein test-
Präfix, um sicherzustellen, dass sich die Entwickler ihres Zwecks bewusst sind. Eine typische Verwendung wäre, eine Nicht-JNDI-DataSource bereitzustellen, die möglicherweise eine HSQLDB-Datenbank während der automatisierten Tests erstellt und im Testfall referenziert.
Im Allgemeinen sollten die meisten Ihrer Spring-Kontextdateien jedoch keine speziellen Änderungen erfordern, da sie zwischen den Ebenen verschoben werden. Es sollte der Fall sein, dass dasselbe Build-Artefakt (z. B. WAR-Datei) in dev / test / production nur mit unterschiedlichen Anmeldeinformationen verwendet wird.