Actualmente estamos escribiendo una aplicación que se divide en varios proyectos / módulos. Por ejemplo, tomemos los siguientes módulos:
- myApp-DAO
- myApp-jabber
Cada módulo tiene su propio archivo xml de contexto Spring. Para el módulo DAO tengo un PropertyPlaceholderConfigurer que lee un archivo de propiedades con los parámetros de conexión de base de datos necesarios. En el módulo jabber también tengo un PropertyPlaceHolderConfigurer para las propiedades de conexión del jabber.
Ahora viene la aplicación principal que incluye myApp-DAO y myApp-jabber. Lee todos los archivos de contexto e inicia un gran contexto de Spring. Desafortunadamente, parece que solo puede haber un PropertyPlaceholderConfigurer por contexto, por lo que cualquier módulo que se cargue primero puede leer sus parámetros de conexión. El otro arroja una excepción con un error como "No se pudo resolver el marcador de posición 'jabber.host'"
Entiendo cuál es el problema, pero realmente no conozco una solución, o la mejor práctica para mi caso de uso.
¿Cómo configuraría cada módulo para que cada uno pueda cargar su propio archivo de propiedades? En este momento, saqué PropertyPlaceHolderConfigurer de los archivos de contexto separados y los combiné en el contexto de la aplicación principal (cargando todos los archivos de propiedades con un solo PropertyPlaceHolderConfigurer). Sin embargo, esto apesta, porque ahora todos los que usan el módulo dao tienen que saber que necesitan un PropertyPlaceHolderConfigurer en su contexto ... también fallan las pruebas de integración en el módulo dao, etc.
Tengo curiosidad por conocer soluciones / ideas de la comunidad de stackoverflow.