【发布时间】:2012-08-18 04:53:40
【问题描述】:
我正在使用最新的 spring-data-mongodb (1.1.0.M2) 和最新的 Mongo Driver (2.9.0-RC1)。我有一种情况,我有多个客户端连接到我的应用程序,我想在同一个 Mongo 服务器中为每个客户端提供自己的“模式/数据库”。如果我直接使用驱动程序,这不是一项很难完成的任务:
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 类。
究竟我会在哪里粘贴多个数据库名称?我必须创建多个数据库名称、多个MongoTempates(每个数据库名称一个)和多个其他配置类。这仍然没有让我的存储库接口使用正确的模板。如果有人尝试过这样的事情,请告诉我。如果我弄清楚了,我会在这里发布答案。
谢谢。
【问题讨论】:
-
@sbzomm 我遇到了同样的情况,你找到解决方案了吗?
-
试试这个方法 - blog.marcosbarbero.com/…。看起来相当干净且可扩展。
标签: java spring mongodb spring-data spring-data-mongodb