回调函数的使用
所有Spring模板类的一个常见设计特性是,所有功能都被路由到模板的一个执行回调方法中。因此,使用这些执行回调是访问MongoDB驱动程序的MongoDatabase
和MongoCollection
对象以执行在MongoTemplate
上没有作为方法公开的不常见操作的首选方法。例如:
使用CollectionCallback返回关于索引的信息:
@Test
public void testCallbackExec(){
boolean hasIndex = mongoOps.execute(Venue.class, new CollectionCallback<Boolean>() {
@Nullable
@Override
public Boolean doInCollection(MongoCollection<org.bson.Document> collection) throws MongoException, DataAccessException {
final ListIndexesIterable<org.bson.Document> indexes = collection.listIndexes();
for (org.bson.Document document : indexes) {
if ("location".equals(document.get("name"))) {
return true;
}
}
return false;
}
});
Assert.assertEquals(true,hasIndex);
}
下面的列表描述了执行回调方法。
方法 | 描述 |
---|---|
<T> T execute (Class<?> entityClass, CollectionCallback<T> action) | 为指定类的实体集合执行给定的CollectionCallback。 |
<T> T execute (String collectionName, CollectionCallback<T> action) | 对给定名称的集合执行给定的CollectionCallback。 |
<T> T execute (DbCallback<T> action) | 根据需要执行DbCallback转换任何异常。Spring Data MongoDB为2.2版本中引入的聚合框架提供了支持。 |
<T> T execute (String collectionName, DbCallback<T> action) | 对给定名称的集合执行DbCallback,根据需要转换任何异常。 |