Nous écrivons actuellement une application qui est divisée en plusieurs projets / modules. Par exemple, prenons les modules suivants:
- myApp-DAO
- myApp-jabber
Chaque module a son propre fichier xml de contexte Spring. Pour le module DAO, j'ai un PropertyPlaceholderConfigurer qui lit un fichier de propriétés avec les paramètres de connexion de base de données nécessaires. Dans le module jabber, j'ai également un PropertyPlaceHolderConfigurer pour les propriétés de connexion jabber.
Vient maintenant l'application principale qui comprend myApp-DAO et myApp-jabber. Il lit tous les fichiers de contexte et démarre un gros contexte Spring. Malheureusement, il semble qu'il ne puisse y avoir qu'un seul PropertyPlaceholderConfigurer par contexte, donc le module chargé en premier est capable de lire ses paramètres de connexion. L'autre lève une exception avec une erreur telle que "Impossible de résoudre l'espace réservé 'jabber.host'"
Je comprends en quelque sorte quel est le problème, mais je ne connais pas vraiment de solution - ni la meilleure pratique pour mon cas d'utilisation.
Comment configurer chaque module pour que chacun puisse charger son propre fichier de propriétés? En ce moment, j'ai déplacé le PropertyPlaceHolderConfigurer hors des fichiers de contexte séparés et les ai fusionnés dans le contexte de l'application principale (chargement de tous les fichiers de propriétés avec un seul PropertyPlaceHolderConfigurer). Cela craint, car maintenant, tous ceux qui utilisent le module dao doivent savoir qu'ils ont besoin d'un PropertyPlaceHolderConfigurer dans leur contexte ... les tests d'intégration dans le module dao échouent, etc.
Je suis curieux de connaître les solutions / idées de la communauté stackoverflow.