最新のspring-data-mongodb(1.1.0.M2)と最新のMongoドライバー(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では、複数のデータベースを簡単に使用することはできません。への接続を設定するための推奨される方法は、 AbstractMongoConfigurationクラスMongo
を拡張することです。
次のメソッドをオーバーライドしていることがわかります。
getDatabaseName()
したがって、1つのデータベース名を使用する必要があります。次に構築するリポジトリインターフェイスは、SimpleMongoRepository
クラスに渡されるMongoTemplate内のデータベース名を使用します。
いったいどこに複数のデータベース名を付けるのでしょうか?複数のデータベース名、複数MongoTempate
のs(データベース名ごとに1つ)、および他の複数の構成クラスを作成する必要があります。それでも、リポジトリインターフェイスで正しいテンプレートを使用することはできません。誰かがそのようなことを試みたなら、私に知らせてください。私がそれを理解したら、私はここに答えを投稿します。
ありがとう。