No momento, estamos escrevendo um aplicativo que está dividido em vários projetos / módulos. Por exemplo, vamos pegar os seguintes módulos:
- myApp-DAO
- myApp-jabber
Cada módulo tem seu próprio arquivo xml de contexto Spring. Para o módulo DAO, tenho um PropertyPlaceholderConfigurer que lê um arquivo de propriedades com os parâmetros de conexão do banco de dados necessários. No módulo jabber, também tenho um PropertyPlaceHolderConfigurer para as propriedades de conexão do jabber.
Agora vem o aplicativo principal que inclui myApp-DAO e myApp-jabber. Ele lê todos os arquivos de contexto e inicia um grande contexto Spring. Infelizmente, parece que só pode haver um PropertyPlaceholderConfigurer por contexto, portanto, o módulo que for carregado primeiro será capaz de ler seus parâmetros de conexão. O outro lança uma exceção com um erro como "Não foi possível resolver o marcador de posição 'jabber.host'"
Eu meio que entendo qual é o problema, mas não sei realmente uma solução - ou a melhor prática para meu caso de uso.
Como eu configuraria cada módulo para que cada um pudesse carregar seu próprio arquivo de propriedades? No momento, movi PropertyPlaceHolderConfigurer dos arquivos de contexto separados e os mesclei no contexto do aplicativo principal (carregando todos os arquivos de propriedade com um único PropertyPlaceHolderConfigurer). No entanto, isso é uma merda, porque agora todos que usam o módulo dao precisam saber que precisam de um PropertyPlaceHolderConfigurer em seu contexto .. também os testes de integração no módulo dao falham etc.
Estou curioso para saber sobre soluções / ideias da comunidade stackoverflow.