Spring-data-mongodb подключается к нескольким базам данных в одном экземпляре Mongo
Я использую последнюю версию spring-data-mongodb (1.1.0.M2) и последнюю версию драйвера Mongo (2.9.0-RC1). У меня есть ситуация, когда у меня есть несколько клиентов, подключающихся к моему приложению, и я хочу предоставить каждому из них свою «схему / базу данных». на том же монго сервере. Это не очень сложная задача, если бы я использовал драйвер напрямую:
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();
Видите, просто. Но spring-data-mongodb не позволяет легко использовать несколько баз данных. Предпочтительный способ настройки соединения сMongo
это продлитьAbstractMongoConfiguration учебный класс:
Вы увидите, что переопределяете следующий метод:
getDatabaseName()
Так что это заставляет вас использовать одно имя базы данных. Интерфейсы хранилища, которые вы затем создаете, используют это имя базы данных внутри MongoTemplate, которое передается вSimpleMongoRepository
учебный класс.
Где я мог бы прикрепить несколько имен баз данных? Я должен сделать несколько имен баз данных, несколькоMongoTempate
s (по одному на имя базы данных) и несколько других классов конфигурации. И это все еще не заставляет мои интерфейсы репозитория использовать правильный шаблон. Если кто-нибудь пробовал такое, дайте мне знать. Если я это выясню, я опубликую ответ здесь.
Благодарю.