2013-02-18 15 views
10

Sto provando a progettare l'architettura di un'applicazione web di medie dimensioni in Java e vorrei avere qualche consiglio su come farlo.Applicazione web modulare con Spring and Maven

Il progetto consiste in un sito Web di base più un numero di moduli. Ad esempio, un modulo fornirebbe la registrazione dell'utente, un altro modulo offrirebbe un servizio Web e così via ...

Ogni volta che ho bisogno di consegnare l'applicazione a un nuovo cliente, la cosa ideale sarebbe prendere i moduli vuole, fare qualche tematizzazione (css, immagini, forse jsp) e sviluppare i moduli personalizzati di cui potrebbe aver bisogno, se ce ne sono.

Ho dato un'occhiata a progetti multi-modulo maven, overlay di guerra, ma trovo difficile partizionare l'applicazione, soprattutto per quanto riguarda la configurazione dei moduli (ad esempio, unendo una configurazione globale a molla dai moduli) . Qualcuno può indicarmi un esempio di un simile sistema? Grazie in anticipo!

risposta

6

La combinazione di una molla è facile. In ogni modulo, impacchetta un file di contesto di primavera nella sua directory/WEB-INF/classes. Quando si sovrappone, tutte le classi e le risorse nelle classi WEB-INF nella dipendenza verranno inserite in WEB-INF/classi nella propria app. (ps, questo funziona anche se si esegue il pacchetto come .jar, ma non si sarà in grado di sovrapporre i file .jsp se lo si fa)

Quindi si tratta solo di importarli. Questo è il modo migliore per utilizzare i pattern impostati per trovare i file. Ecco un esempio:

<import resource="classpath*:/module/*-context.xml" /> 

Questo importerà tutte le risorse del percorso di classe che corrispondono a questo modello.

Annotazione esempio based:

@Configuration 
@ImportResource(value={"classpath*:/module/*-context.xml"}) 
public class MyConfiguration { ... } 

E 'la configurazione web.xml che ti farà più problemi che altro se avete la necessità di fare eventuali personalizzazioni web.xml in moduli. È possibile utilizzare il servlet 3.0 per questo, ovviamente, ma richiede il deployment del server giusto.

+1

grazie per l'aiuto! Vedo che il punto qui è quello di "frammentare" i file di configurazione tra i moduli, quando possibile. Penso che potrei vivere con un singolo web.xml. Quindi ora farò una prova e vedrò cosa si può fare con le altre tecnologie di configurazione (hibernate, tiles e così via). Aggiornerò questo – user683887

+1

hibernate può avere anche i loro modelli frammentati. i bean factory spring per le factory di sessione di ibernazione hanno anche la scansione del classpath (o .hbm.xml o scansione basata su pacchetti) – Matt

1

fwiw, dopo un po 'di esperienza con la semplice importazione di Spring abbiamo sviluppato una piccola struttura per modularità senza oschi per la primavera. Il primo problema con l'importazione è il nome di fagioli scontri non si può avere omonima Singleton in due contesti, e molti altri fastidi .. tbc https://github.com/griddynamics/banshun

- Mike