diff --git a/src/main/java/org/springframework/data/util/StreamUtils.java b/src/main/java/org/springframework/data/util/StreamUtils.java
index fa8d708d2..b1cfc8944 100644
--- a/src/main/java/org/springframework/data/util/StreamUtils.java
+++ b/src/main/java/org/springframework/data/util/StreamUtils.java
@@ -41,25 +41,30 @@ import org.springframework.util.MultiValueMap;
public interface StreamUtils {
/**
- * Returns a {@link Stream} backed by the given {@link Iterator}.
- *
- * If the given iterator is an {@link CloseableIterator} add a {@link CloseableIteratorDisposingRunnable} wrapping the
- * given iterator to propagate {@link Stream#close()} accordingly.
+ * Returns a {@link Stream} backed by the given {@link Iterator}
*
- * @param iterator must not be {@literal null}
+ * @param iterator must not be {@literal null}.
* @return
- * @since 1.8
*/
public static Stream createStreamFromIterator(Iterator iterator) {
+ Spliterator spliterator = Spliterators.spliteratorUnknownSize(iterator, Spliterator.NONNULL);
+ return StreamSupport.stream(spliterator, false);
+ }
+
+ /**
+ * Returns a {@link Stream} backed by the given {@link CloseableIterator} and forwarding calls to
+ * {@link Stream#close()} to the iterator.
+ *
+ * @param iterator must not be {@literal null}.
+ * @return
+ * @since 2.0
+ */
+ public static Stream createStreamFromIterator(CloseableIterator iterator) {
+
Assert.notNull(iterator, "Iterator must not be null!");
- Spliterator spliterator = Spliterators.spliteratorUnknownSize(iterator, Spliterator.NONNULL);
- Stream stream = StreamSupport.stream(spliterator, false);
-
- return iterator instanceof CloseableIterator//
- ? stream.onClose(() -> ((CloseableIterator) iterator).close()) //
- : stream;
+ return createStreamFromIterator((Iterator) iterator).onClose(() -> iterator.close());
}
/**