1

というDAOがありFooます。 MongoTemplateは、これを という名前のデータベース コレクションにマップしたいと考えていますfoos。問題は次のとおりです。

  • Mongo では、コレクションの名前はFoos.
  • Fooオブジェクトはサードパーティのライブラリから取得され、そのすべてのコンストラクターはprivate.

MongoTemplate--via a MongoItemReader--know がコレクションFoosを Document にマップするように Spring Bean を構成するにはどうすればよいFooですか?

それが役に立てば、私は主にMongoDBからのデータの読み取りに関心があります。

4

1 に答える 1

1

回答:MongoItemReaderの getter/setter を拡張して追加することになりましたcollection。これにより、気にしないものを委任doPageRead()し、カスタム クエリでコレクションを設定するように変更することができました。

@Scope("step")
public class MyMongoItemReader extends MongoItemReader<Object> {

    public void setCollection(String collection) {
        this.collection = collection;
    }

    @Override
    protected Iterator<Object> doPageRead() {

        ...
        Query mongoQuery = // set query
        ...

        return (Iterator<Object>) //
           template.find(mongoQuery, Object.class, this.collection).iterator();
    }

}
于 2014-03-18T15:37:43.997 に答える