Spring Data Streamable 与 Stream

For*_*rin 4 java spring spring-data spring-boot

我知道目的是什么以及如何将 Stream 作为查询输出处理,即:

Stream<Person> findAll();
Run Code Online (Sandbox Code Playgroud)

然而,最近我偶然发现org.springframework.data.util.Streamable<T>,其使用方式与 a 相同Stream

Streamable<Person> findByNameContaining(String name, Sort sort);
Run Code Online (Sandbox Code Playgroud)

的用例是什么Streamable

Pan*_*kos 5

接口可流式传输

函数式接口:这是一个函数式接口,因此可以用作 lambda 表达式或方法引用的赋值目标。

春季文档

Stream fromjava.util只是一个接口。

Streamable 是从 Spring 创建的,作为一个功能接口,它扩展了Iterable<T>

Streamable 还有一些默认方法和一些静态方法。但它过去能够利用函数式接口的工作方式提供迭代器作为 lambda 函数。

这只是技术信息。

据我了解,现在实用它的主要用途是将 an 转换Iterable<T>为 aStream<T>

    Iterable<String> it = Arrays.asList("a","b","c");
    Stream<String> s = Streamable.of(it).stream();
Run Code Online (Sandbox Code Playgroud)

不存在直接将 an 转换Iterable<T>为 a 的简单方法Stream<T>,因此他们发明了它。

您可以在这里找到其中的大部分用途 Spring Streamable 的用途

  • 谢谢!处理怎么样——是否需要用“@Transactional”注释,就像返回“Stream”的方法一样? (2认同)