Dove mettere il file di configurazione di Spring?

16

Voglio integrare il framework Spring nel mio progetto, in particolare sul lato server.

Quindi, non voglio inserirlo nella cartella WEB-INF del file war.

Devo inserire applicationContext.xml in ogni livello (indica ogni progetto da quando è stato diviso in progetti distinti? (Servizi, Dominio e DAO)

Che cos'è la buona pratica?

    
posta Mik378 22.04.2012 - 17:50
fonte

2 risposte

23

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.

    
risposta data 23.04.2012 - 11:32
fonte
1

Il tuo progetto è diviso in moduli Maven? In tal caso, puoi aggiungere un modulo aggiuntivo solo per i file di configurazione. Lo chiamo config-module

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

Tale configurazione è un suggerimento. Imposta il tuo set di file Imballalo come un JAR e aggiungi questo modulo come dipendenza da qualsiasi altro modulo (web, ear's ear, un altro jar).

Avrai accesso alle risorse config-module (xml, proprietà, ecc.) perché si trovano nel classpath.

pom del modulo web

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

Quindi utilizza le istruzioni import dai file di contesto Spring esterni. Ad esempio

<import resource="classpath*:com/package/subpackage/**/config/applicationContext.xml" />
    
risposta data 12.04.2016 - 18:29
fonte

Leggi altre domande sui tag