La struttura del file Maven può essere d'aiuto in questo
In sostanza, i file di configurazione di Spring (che possono avere qualsiasi nome, non solo quelli generici 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 WEB-INF/classes
directory che è il luogo normale in cui questi file finiscono.
Le varianti includono una spring
directory aggiuntiva (ad es. src/main/resources/spring
) Per separare i contesti Spring da altre risorse dedicate ai framework applicativi. Potresti voler dividere i contesti dell'applicazione in livelli dedicati come:
example-servlet.xml
example-data.xml
example-security.xml
e così via.
Che dire di diversi ambienti come sviluppo / test / produzione?
In genere, la configurazione di Spring dovrebbe raccogliere la configurazione dell'ambiente dal suo ambiente. Di solito questo significa utilizzare JNDI, JDBC, variabili di ambiente o file di proprietà esterne per fornire la configurazione necessaria. Elenco quelli in ordine di preferenza poiché JNDI è generalmente più facile da amministrare rispetto ai file delle proprietà esterne in un cluster di produzione controllata.
In caso di test di integrazione potrebbe essere necessario utilizzare un file di configurazione Spring "solo test". Ciò conterrebbe contesti speciali che utilizzano bean di test o configurazione. Questi sarebbero presenti sotto src / test / resources e potrebbero avere un test-
prefisso per assicurarsi che gli sviluppatori siano consapevoli del loro scopo. Un uso tipico sarebbe quello di fornire un DataSource non JNDI, magari destinato a un database HSQLDB durante i test automatici di compilazione, e farebbe riferimento nel caso di test.
Tuttavia, in generale la maggior parte dei file di contesto Spring non dovrebbe richiedere modifiche specializzate mentre si spostano tra i livelli. Dovrebbe essere il caso che lo stesso artefatto di compilazione (ad es. File WAR) venga utilizzato in dev / test / production solo con credenziali diverse.