如何在创建Java Spring MVC时将大量数据作为文件提供服务?

马弗洛雷斯16

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

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

有没有一种方法可以创建一个CSV文件并将其流式传输到前端,以便生成尽可能少的内存?

不能进行前端请求批处理并在前端中生成CSV文件,此调用将用于其他平台,并且我正在尝试使其对所有人都尽可能干净。

安德烈亚斯

如果您查看Spring Web MVCSpring Framework文档,第1.4.3处理程序方法的“返回值”小节中,您将找到许多返回流数据的方法,例如

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

  • ResponseBodyEmitter-发出一个对象流,以异步方式将其写入HttpMessageConverter也支持作为一个身体ResponseEntity请参阅异步请求HTTP流

这意味着您可以做到:

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

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用Java Spring服务于动态创建的文件?

如何在 Spring Boot 中为任何服务创建接口

如何在Eclipse中创建Spring MVC项目?

如何在Spring MVC中创建多重布局

如何在Spring Boot中创建日志文件?

如何在 Spring Boot 项目目录中创建日志文件?

如何在不使用@SpringBootApplication的情况下仅使用XML文件在Spring Boot Java中创建REST端点?

如何在Spring Java配置中创建Jcache?

如何在Spring Boot + Spring Data中创建自定义数据源

如何在Spring Boot中使用不活动的数据源创建Jar文件?

如何在创建时填充Java映射

如何在Java中创建ZIP文件?

如何在Java Spring MVC中发出403错误

如何在java8上配置spring mvc

如何在Java / Spring中将文件下载为Blob /字节

如何在Spring中上传多个文件-Java Config

将数据作为json接收并在服务器端进行处理(java spring)

如何在Java Spring MVC项目上从FTP服务器以base64编码格式获取pdf文件?

Spring MVC如何将Joda数据类型作为JSON处理

Spring-Boot:如何在不使用 bean 的情况下创建 Rest API 服务?

如何在Spring REST Web服务中创建和销毁从移动客户端调用的会话

如何在服务器上创建 Spring Web 应用程序

如何在Java Spring Boot中将字节数组作为内存文件返回?

使用Spring MVC Frame工作,如何在bingmap中迭代列表并创建图钉?

如何在Intellij IDEA 13.1中创建具有Maven结构的Spring MVC应用程序?

如何在整个Spring MVC Web应用程序中创建对象的单个实例?

如何在Spring MVC中基于控制器和操作方法创建URL?

如何在 Spring MVC 的 EL 中显示现有和新创建的值?

如何在spring-mvc中使用未知数量的@PathVariables创建url模式?