1

我有一个名为Foo. MongoTemplate想要将此映射到名为 的数据库集合foos。问题是:

  • 在 Mongo 中,该集合被命名为Foos.
  • Foo对象来自第三方库,其所有构造函数都是private.

如何配置我的 Spring Beans 以便MongoTemplate--via a MongoItemReader--knows 集合Foos映射到我的 Document Foo

如果有帮助,我主要关心MongoDB 读取数据。

4

1 回答 1

1

答:我最终扩展MongoItemReader并添加了一个 getter/setter for 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 回答