首页 > 解决方案 > java - 如何在创建Java Spring MVC时将大量数据作为文件提供?

问题描述

我的生产服务器每个块有数百个用户,我意识到导出数据可能会破坏内存并破坏多个用户的应用程序。

我们正在谈论由单个用户导出的数百万个数据。

有没有办法创建一个 CSV 文件并将其流式传输到前端,因为它正在生成以使用尽可能少的内存?

使前端请求批处理并在前端生成 CSV 文件不是一个选项,此调用将用于其他平台,我正在努力使其尽可能干净。

标签: javaspringperformancemodel-view-controllerstack-overflow

解决方案


如果您查看Spring Web MVC上的Spring Framework 文档,第1.4.3 节。Handler Methods,小节Return Values,您会发现许多返回流数据的方法,例如

  • void- 具有void返回类型(或null返回值)的方法如果还具有ServletResponse、 或OutputStream参数或@ResponseStatus注释,则被认为已完全处理响应。

  • ResponseBodyEmitterHttpMessageConverter- 异步发出一个对象流,用's写入响应;也支持作为 a 的主体ResponseEntity。请参阅异步请求HTTP 流

这意味着你可以做到:

  • 同步:自己将原始响应写入处理程序方法中的 HTTP 响应流。方法返回时响应完成。

  • 异步:在您的处理程序方法中准备流式传输(包括 HTTP 标头),然后在另一个线程中执行实际流式传输。


推荐阅读