La struttura dei file Maven può aiutare con questo
In sostanza i file di configurazione di Spring (che possono avere qualsiasi nome tra l'altro, non solo il generico applicationContext.xml
) sono trattati come risorse del percorso di classe e archiviati in src/main/resources
. Durante il processo di compilazione, questi vengono quindi copiati nella directory WEB-INF/classes
, che è la posizione normale per la fine di questi file.
Le varianti includono una directory spring
aggiuntiva (ad esempio src/main/resources/spring
) per separare i contesti Spring da altre risorse dedicate ai framework dell'applicazione. Potresti voler suddividere i contesti dell'applicazione in livelli dedicati come:
example-servlet.xml
example-data.xml
example-security.xml
e così via.
Che dire di ambienti diversi come dev / test / produzione?
Tipicamente, la tua configurazione di Spring dovrebbe prendere la configurazione dell'ambiente dal suo, ahem, ambiente. Di solito questo significa utilizzare JNDI, JDBC, variabili di ambiente o file di proprietà esterni per fornire la configurazione necessaria. Elencho quelli in ordine di preferenza poiché JNDI è generalmente più facile da amministrare rispetto ai file di proprietà esterni in un cluster di produzione controllato.
Nel caso di test di integrazione potrebbe essere necessario utilizzare un file di configurazione Spring "solo test". Ciò conterrebbe contesti speciali che utilizzano i bean di test o la configurazione. Questi sarebbero presenti sotto src / test / risorse e potrebbero avere un prefisso test-
per assicurarsi che gli sviluppatori siano consapevoli del loro scopo. Un tipico utilizzo sarebbe quello di fornire un DataSource non JNDI che potrebbe indirizzare un database HSQLDB durante i test automatici di compilazione e che verrebbe fatto riferimento all'interno del caso di test.
Tuttavia, in generale, la maggior parte dei file di contesto di Spring non dovrebbe richiedere modifiche specializzate mentre si spostano tra i livelli. Dovrebbe essere il caso che lo stesso artefatto di build (ad esempio il file WAR) sia utilizzato in dev / test / produzione solo con credenziali diverse.