Attualmente stiamo scrivendo un'applicazione che è suddivisa in più progetti / moduli. Ad esempio, prendiamo i seguenti moduli:
- myApp-DAO
- myApp-jabber
Ogni modulo ha il proprio file xml del contesto Spring. Per il modulo DAO ho un PropertyPlaceholderConfigurer che legge un file di proprietà con i parametri di connessione db necessari. Nel modulo jabber ho anche un PropertyPlaceHolderConfigurer per le proprietà di connessione jabber.
Ora arriva l'applicazione principale che include myApp-DAO e myApp-jabber. Legge tutti i file di contesto e avvia un grande contesto Spring. Sfortunatamente sembra che ci possa essere un solo PropertyPlaceholderConfigurer per contesto, quindi qualsiasi modulo viene caricato per primo è in grado di leggere i suoi parametri di connessione. L'altro genera un'eccezione con un errore del tipo "Impossibile risolvere il segnaposto" jabber.host ""
In un certo senso capisco qual è il problema, ma non conosco davvero una soluzione o la migliore pratica per il mio caso d'uso.
Come configurare ogni modulo in modo che ognuno possa caricare il proprio file di proprietà? In questo momento ho spostato PropertyPlaceHolderConfigurer fuori dai file di contesto separati e li ho uniti nel contesto dell'applicazione principale (caricando tutti i file di proprietà con un singolo PropertyPlaceHolderConfigurer). Questo però fa schifo, perché ora tutti coloro che usano il modulo dao devono sapere che hanno bisogno di un PropertyPlaceHolderConfigurer nel loro contesto .. anche i test di integrazione nel modulo dao falliscono ecc.
Sono curioso di conoscere soluzioni / idee dalla comunità di stackoverflow ..