it-swarm.com.de

Wo soll die Spring-Konfigurationsdatei abgelegt werden?

Ich möchte das Spring Framework in mein Projekt integrieren, insbesondere auf der Serverseite.

Ich möchte es also nicht in den WEB-INF-Ordner der Kriegsdatei legen.

Sollte ich eine applicationContext.xml in jede Ebene einfügen (bedeutet, dass jedes Projekt seitdem in verschiedene Projekte unterteilt ist? (Services, Domain und DAO)

Was ist die gute Praxis?

18
Mik378

Die Maven-Dateistruktur kann dabei helfen

Im Wesentlichen werden die Spring-Konfigurationsdateien (die übrigens einen beliebigen Namen haben können, nicht nur das generische applicationContext.xml) Als Klassenpfadressourcen behandelt und unter src/main/resources Abgelegt. Während des Erstellungsprozesses werden diese dann in das Verzeichnis WEB-INF/classes Kopiert, in dem diese Dateien normalerweise landen.

Variationen enthalten ein zusätzliches spring -Verzeichnis (z. B. src/main/resources/spring), Um die Spring-Kontexte von anderen Ressourcen zu trennen, die für Anwendungsframeworks vorgesehen sind. Möglicherweise möchten Sie die Anwendungskontexte in dedizierte Ebenen aufteilen, z.

example-servlet.xml
example-data.xml
example-security.xml

und so weiter.

Was ist mit verschiedenen Umgebungen wie dev/test/Production?

Normalerweise sollte Ihre Spring-Konfiguration die Umgebungskonfiguration aus ihrer Umgebung übernehmen. Normalerweise bedeutet dies, dass Sie JNDI-, JDBC-, Umgebungsvariablen oder externe Eigenschaftendateien verwenden, um die erforderliche Konfiguration bereitzustellen. Ich liste diese in der Reihenfolge ihrer Präferenz auf, da JNDI im Allgemeinen einfacher zu verwalten ist als externe Eigenschaftendateien in einem kontrollierten Produktionscluster.

Bei Integrationstests müssen Sie möglicherweise eine Spring-Konfigurationsdatei verwenden, die nur für Tests geeignet ist. Dies würde spezielle Kontexte enthalten, die Test-Beans oder Konfiguration verwenden. Diese befinden sich unter src/test/resources und haben möglicherweise das Präfix test-, Um sicherzustellen, dass Entwickler über ihren Zweck informiert sind. Eine typische Verwendung wäre die Bereitstellung einer Nicht-JNDI-DataSource, die möglicherweise auf eine HSQLDB-Datenbank während der automatisierten Build-Tests abzielt und auf die im Testfall verwiesen wird.

Im Allgemeinen sollten die meisten Ihrer Spring-Kontextdateien jedoch keine speziellen Änderungen erfordern, da sie zwischen 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.

25
Gary Rowe

Ist Ihr Projekt in Maven-Module aufgeteilt? In diesem Fall können Sie ein zusätzliches Modul nur für Konfigurationsdateien hinzufügen. Nennen wir es Konfigurationsmodul

config-module
      |
      |--> src\main\resources\config\spring\applicationContex.xml
      |--> src\main\resources\config\properties\application.properties
      |--> pom.xml

Eine solche Konfiguration ist ein Vorschlag. Richten Sie Ihren eigenen Dateisatz ein . Packen Sie ihn wie ein [~ # ~] jar [~ # ~] und fügen Sie ihn hinzu Dieses Modul als Abhängigkeit von einem anderen Modul (Web, Ear's Lib, ein anderes Jar).

Sie haben Zugriff auf Konfigurationsmodul Ressourcen (XML, Eigenschaften usw.), da sie sich im Klassenpfad befinden.

Pom des Webmoduls

<dependency>
    <groupId>com.myproject.group</groupId>
    <artifactId>config-module</artifactId>
</dependency>

Verwenden Sie dann import Anweisungen aus externen Spring-Kontextdateien. Zum Beispiel

<import resource="classpath*:com/package/subpackage/**/config/applicationContext.xml" />
2
Laiv