java - java - 如何在创建Java Spring MVC时将大量数据作为文件提供?
问题描述
我的生产服务器每个块有数百个用户,我意识到导出数据可能会破坏内存并破坏多个用户的应用程序。
我们正在谈论由单个用户导出的数百万个数据。
有没有办法创建一个 CSV 文件并将其流式传输到前端,因为它正在生成以使用尽可能少的内存?
使前端请求批处理并在前端生成 CSV 文件不是一个选项,此调用将用于其他平台,我正在努力使其尽可能干净。
解决方案
如果您查看Spring Web MVC上的Spring Framework 文档,第1.4.3 节。Handler Methods,小节Return Values,您会发现许多返回流数据的方法,例如
void
- 具有void
返回类型(或null
返回值)的方法如果还具有ServletResponse
、 或OutputStream
参数或@ResponseStatus
注释,则被认为已完全处理响应。ResponseBodyEmitter
HttpMessageConverter
- 异步发出一个对象流,用's写入响应;也支持作为 a 的主体ResponseEntity
。请参阅异步请求和HTTP 流。
这意味着你可以做到:
同步:自己将原始响应写入处理程序方法中的 HTTP 响应流。方法返回时响应完成。
异步:在您的处理程序方法中准备流式传输(包括 HTTP 标头),然后在另一个线程中执行实际流式传输。
推荐阅读
- javascript - 使用 GatsbyJS 的 GraphQL 查询中的范围文件夹结构
- sql - 将正确的 SQL 转换为 HQL
- configuration - VuePress 配置中的前端默认值
- c# - 无法在网格控件存储库中添加行lookupedit 在单元格失去焦点时变为空
- powershell - 在 PowerShell ISE 中编辑暂停消息
- mysql - 在mysql中左连接三个表,内连接两个
- artifactory - 无法启动 JFrog Artifactory
- python - 检查文件体系结构的通用方法
- php - Web - 重定向访问目录而不是文件的人
- javascript - 如何在laravel刀片文件中使用javascript变量到数组中