Spring-data-mongodb conecta-se a vários bancos de dados em uma instância do Mongo
Estou usando o mais recente spring-data-mongodb (1.1.0.M2) e o mais recente Mongo Driver (2.9.0-RC1). Eu tenho uma situação onde eu tenho vários clientes se conectando ao meu aplicativo e eu quero dar a cada um o seu próprio "esquema / banco de dados" no mesmo servidor Mongo. Esta não é uma tarefa muito difícil de conseguir se eu estivesse usando o driver diretamente:
Mongo mongo = new Mongo( new DBAddress( "localhost", 127017 ) );
DB client1DB = mongo.getDB( "client1" );
DBCollection client1TTestCollection = client1DB.getCollection( "test" );
long client1TestCollectionCount = client1TTestCollection.count();
DB client2DB = mongo.getDB( "client2" );
DBCollection client2TTestCollection = client2DB.getCollection( "test" );
long client2TestCollectionCount = client2TTestCollection.count();
Veja, fácil. Mas o spring-data-mongodb não permite uma maneira fácil de usar vários bancos de dados. A maneira preferida de configurar uma conexãoMongo
é estender oAbstractMongoConfiguration classe:
Você verá que você substitui o seguinte método:
getDatabaseName()
Por isso, força você a usar um nome de banco de dados. As interfaces de repositório que você constrói usam esse nome de banco de dados dentro do MongoTemplate que é passado para oSimpleMongoRepository
classe.
Onde na terra eu iria ficar vários nomes de banco de dados? Eu tenho que fazer vários nomes de banco de dados, múltiplosMongoTempate
s (um por nome de banco de dados) e várias outras classes de configuração. E isso ainda não permite que minhas interfaces de repositório usem o modelo correto. Se alguém tentou algo assim, me avise. Se eu descobrir, postarei a resposta aqui.
Obrigado.