Java MongoTemplate 支持 8 个流
Java 8 stream support in MongoTemplate
为什么我们在 spring-data-mongodb-1.8.2.RELEASE.jar 的 MongoTemplate 中没有 java 8 流支持?
我看到在 MongoRepository 接口中添加了流支持 bean,但我使用纯 MongoTemplate。
简而言之
有流支持,但没有在 MongoOperations
上公开 Stream
。
说明
Spring 数据 Mongo 通过公开 CloseableIterator<T> stream(final Query query, final Class<T> entityType)
获得流支持。它不在 MongoOperations
上使用 Stream
类型,因为 Spring 数据 Mongo 支持 Java 回到 1.6。您可以使用 StreamUtils.createStreamFromIterator(Iterator<T>)
获取 Stream
对象。 StreamUtils
负责关闭流和释放资源。
HTH,马克
Mark 的回答是正确的(并且应该保留被接受的答案)。也许还有一些关于为什么在 MongoTemplate
:
上找不到 Stream
的详细信息
MongoTemplate
级别没有Stream
的核心原因是Spring数据MongoDB仍然兼容Java6。所以我们不能在 类 我们提供的 的方法签名中使用 Java 8 种类型。对于存储库,这是一个不同的故事,因为这是我们在运行时检查的用户代码,并且 - 如果 Java 8 存在 - 动态适应,例如通过将 CloseableIterator<T>
转换为 Stream
.
为什么我们在 spring-data-mongodb-1.8.2.RELEASE.jar 的 MongoTemplate 中没有 java 8 流支持?
我看到在 MongoRepository 接口中添加了流支持 bean,但我使用纯 MongoTemplate。
简而言之
有流支持,但没有在 MongoOperations
上公开 Stream
。
说明
Spring 数据 Mongo 通过公开 CloseableIterator<T> stream(final Query query, final Class<T> entityType)
获得流支持。它不在 MongoOperations
上使用 Stream
类型,因为 Spring 数据 Mongo 支持 Java 回到 1.6。您可以使用 StreamUtils.createStreamFromIterator(Iterator<T>)
获取 Stream
对象。 StreamUtils
负责关闭流和释放资源。
HTH,马克
Mark 的回答是正确的(并且应该保留被接受的答案)。也许还有一些关于为什么在 MongoTemplate
:
Stream
的详细信息
MongoTemplate
级别没有Stream
的核心原因是Spring数据MongoDB仍然兼容Java6。所以我们不能在 类 我们提供的 的方法签名中使用 Java 8 种类型。对于存储库,这是一个不同的故事,因为这是我们在运行时检查的用户代码,并且 - 如果 Java 8 存在 - 动态适应,例如通过将 CloseableIterator<T>
转换为 Stream
.