Java 如何在Spring框架中下载文本文件,同时从数据库中检索文本文件?
我想动态地从数据库创建一个非常大的文本文件,并在数据仍在从数据库检索时下载它,这样用户就不会等待数据准备好开始下载过程的几分钟 我以为Java只有一种类型的流,但它看起来有几十种,所以这一种不起作用:Java 如何在Spring框架中下载文本文件,同时从数据库中检索文本文件?,java,spring,spring-boot,stream,java-stream,Java,Spring,Spring Boot,Stream,Java Stream,我想动态地从数据库创建一个非常大的文本文件,并在数据仍在从数据库检索时下载它,这样用户就不会等待数据准备好开始下载过程的几分钟 我以为Java只有一种类型的流,但它看起来有几十种,所以这一种不起作用: @GetMapping(path = {"/export/testdownload"}, produces = "text/csv") @ApiOperation(value = "Test downloading") public ResponseEntity testDownloading()
@GetMapping(path = {"/export/testdownload"}, produces = "text/csv")
@ApiOperation(value = "Test downloading")
public ResponseEntity testDownloading() {
return ResponseEntity
.ok()
.body(IntStream.range(0, 5).mapToObj(i -> getData(i, 10)));
}
public Integer getData(Integer page, Integer perPage) {
return page * perPage;
}
我想做的是这样的:
@GetMapping(path = {"/export/testdownload"}, produces = "text/csv")
@ApiOperation(value = "Test downloading")
public ResponseEntity testDownloading() {
return ResponseEntity
.ok()
.body(SomeKindOfStream.range(0, 5).mapToObj(i -> getData(i, 10)));
}
public String getData(Integer page, Integer perPage) throws InterruptedException {
TimeUnit.SECONDS.sleep(10);
return "test,line," + page + "\n";
}
我可以从数据库中检索字符串并立即输出,但我不知道如何在仍然检索的同时连续输出这些字符串。在PHP中很容易,只需在循环中回显字符串,但在Java中,我想我需要将字符串转换为某种流,然后使用某种管道。您看过Project Reactor和Responsive Spring吗?您可以仅使用Spring引导创建非阻塞操作,但没有简单的方法来创建非阻塞端点。您看过ProjectReactor和ResponsiveSpring吗?只能使用Spring Boot创建非阻塞操作,但是没有简单的方法来创建非阻塞端点。