我有一个名为Foo
. MongoTemplate
想要将此映射到名为 的数据库集合foos
。问题是:
- 在 Mongo 中,该集合被命名为
Foos
. - 该
Foo
对象来自第三方库,其所有构造函数都是private
.
如何配置我的 Spring Beans 以便MongoTemplate
--via a MongoItemReader
--knows 集合Foos
映射到我的 Document Foo
?
如果有帮助,我主要关心从MongoDB 读取数据。
我有一个名为Foo
. MongoTemplate
想要将此映射到名为 的数据库集合foos
。问题是:
Foos
.Foo
对象来自第三方库,其所有构造函数都是private
. 如何配置我的 Spring Beans 以便MongoTemplate
--via a MongoItemReader
--knows 集合Foos
映射到我的 Document Foo
?
如果有帮助,我主要关心从MongoDB 读取数据。
答:我最终扩展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();
}
}