首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏一个执拗的后端搬砖工

    零OOM导出:StreamingResponseBody原理&实战

    二、StreamingResponseBody是什么? 三、基于StreamingResponseBody实现导出 由于StreamingResponseBody是spring框架web模块自带的能力,所以不用额外引入依赖,如果使用apache POI或者EasyExcel >或者StreamingResponseBody都可以,后续分析为什么这样做。 <StreamingResponseBody>,也就是前边我们所说的使用StreamingResponseBody要把接口返回值定义成StreamingResponseBody或者ResponseEntity 对于使用StreamingResponseBody实现数据导出的大致工作流程如下: StreamingResponseBody对于流式数据响应的工作原理时序图如下: 五、总结 对于大数据量报表导出场景,

    68510编辑于 2025-08-02
  • 来自专栏玩转 Spring Cloud

    StreamingResponseBody-处理Servlet异步IO请求

    StreamingResponseBody-处理Servlet异步请求 StreamingResponseBody是Spring 4.2版本添加的一个新的接口,在Controller里处理输出流时非常有用 StreamingResponseBody可以很有效的解决这个问题。 大致意思是说一个Controller在处理异步请求的时候,StreamingResponseBody会直接把流写入到response的输出流中,并且不会占用Servlet容器线程。 再看下这个接口内容: public interface StreamingResponseBody { /**  * A callback for writing to the response StreamingResponseBody streamingResponseBody = new StreamingResponseBody() { @Override public void writeTo

    1.8K20编辑于 2022-05-05
  • 来自专栏IT技术订阅

    Spring Boot 处理百万级别数据量解决方案

    - 服务端生成流式下载: 在Controller层返回`StreamingResponseBody`,边生成CSV或Excel边发送到客户端,不存储中间文件。 GetMapping(value = "/export", produces = MediaType.APPLICATION_OCTET_STREAM_VALUE) public ResponseEntity<StreamingResponseBody > exportData() { StreamingResponseBody stream = out -> { // 使用writer将数据一行行写入out,同时响应给客户端 响应式编程与流式下载:在处理大数据导出时,使用`StreamingResponseBody`实现服务端流式响应,实时生成和发送数据给客户端,降低内存占用。 3.

    2.3K10编辑于 2024-04-16
  • 来自专栏路过君BLOG from CSDN

    springboot 使用ResponseEntity实现文件流下载

    value = "/api/file/{id}", produces = MediaType.APPLICATION_OCTET_STREAM_VALUE) public ResponseEntity<StreamingResponseBody } catch (IOException e) { } }); } 注:如果函数返回类型不写 ResponseEntity<StreamingResponseBody

    4.9K10编辑于 2021-12-07
  • 来自专栏代码拾遗

    SpringMVC 教程 - 异步请求

    可以使用StreamingResponseBody作为返回值处理: @GetMapping("/download") public StreamingResponseBody handle() { return new StreamingResponseBody() { @Override public void writeTo(OutputStream outputStream ) throws IOException { // write... } }; } StreamingResponseBody也可以放入ResponseEntity

    2.7K30发布于 2018-07-24
  • 来自专栏Java学习网

    Java实例:Vue前端与Java后端实现大文件异步上传下载功能

    org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody java.io.FileInputStream; import java.io.IOException; @GetMapping("/api/download/{filename}") public ResponseEntity<StreamingResponseBody file.exists()) { return ResponseEntity.notFound().build(); } StreamingResponseBody stream

    3.1K10编辑于 2024-05-29
  • 来自专栏张恒的网络日志

    Spring 4.x 支持异步请求处理

    这个时候,可以使用StreamingResponseBody。 下面是一个例子 /** * 直接发送bytes,适合下载数据用 * @return */ @RequestMapping( value = "/direct" ) public StreamingResponseBody direct() { StreamingResponseBody streamingResponseBody = new StreamingResponseBody() { e.printStackTrace(); } } } }; return(streamingResponseBody

    1.8K20发布于 2020-04-28
  • 来自专栏Java课堂

    Spring 实现 3 种异步流式接口,干掉接口超时烦恼

    Spring 框架提供了多种工具支持异步流式接口,如 ResponseBodyEmitter、SseEmitter 和 StreamingResponseBody。 例如,当我们需要下载一个超大文件时,使用 StreamingResponseBody 可以避免将文件数据一次性加载到内存中,而是持续不断的把文件流发送给客户端,从而解决下载大文件时常见的内存溢出问题。 接口实现直接返回 StreamingResponseBody 对象,将数据写入输出流并刷新,调用一次flush就会向客户端写入一次数据。 @GetMapping("/streamingResponse")public ResponseEntity<StreamingResponseBody> handleRbe() { StreamingResponseBody

    99310编辑于 2024-10-14
  • 来自专栏BAT的乌托邦

    【小家Spring】高性能关键技术之---体验Spring MVC的异步模式(ResponseBodyEmitter、SseEmitter、StreamingResponseBody) 高级使用篇

    那么本篇文章主要介绍一下异步模式的高级使用(ResponseBodyEmitter、SseEmitter、StreamingResponseBody) DeferredResult高级使用 上篇博文介绍的它的基本使用 例如文件下载.这样可以通过返回StreamingResponseBody类型的值做到. StreamingResponseBody (很方便的文件下载) 它用于直接将结果写出到Response的OutputStream中; 如文件下载等 ? 接口源码非常简单: @FunctionalInterface public interface StreamingResponseBody { void writeTo(OutputStream outputStream

    7.4K52发布于 2019-09-03
  • 来自专栏颇忒脱的技术博客

    Spring MVC异步处理简介

    StreamingResponseBody A StreamingResponseBody can be returned to write to the response OutputStream asynchronously class StreamingResponseBodyController { @RequestMapping("streaming-response-body-hello") public StreamingResponseBody

    1.9K30发布于 2018-10-19
  • 来自专栏nobody

    Spring MVC 和 WebFlux 中的多部分数据流处理(Multipart Data Streaming)

    1.2 控制器:流式多部分下载(MVC) 要顺序流式传输多部分响应,其中服务器一个接一个地推送多个部分,您可以使用 StreamingResponseBody 直接将多部分 MIME 结构写入 HttpServletResponse BOUNDARY = "MvcBoundary_" + System.currentTimeMillis(); @GetMapping("/download-multipart") public StreamingResponseBody 我们演示了上传和下载的顺序流式传输,展示了 Spring MVC 如何使用 MultipartFile 和 StreamingResponseBody 处理文件传输,以及 WebFlux 如何利用 FilePart

    10110编辑于 2026-03-16
  • 来自专栏乐百川的学习频道

    Spring Web MVC框架(三) 异步处理

    这时候可以让方法返回StreamingResponseBody,Spring会将二进制流直接返回给客户端。这种方法可以用来向客户端发送图片等数据。 @RequestMapping("/streamBody") public StreamingResponseBody streamBody() { return (output) -> {

    96110编辑于 2022-05-05
  • 来自专栏玩转 Spring Cloud

    使用ireport下载Excel或Pdf报表

    org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody reportService; @RequestMapping(value = "/download", method = RequestMethod.GET) public ResponseEntity<StreamingResponseBody

    1.4K20编辑于 2022-05-05
  • 来自专栏BAT的乌托邦

    【小家Spring】Spring MVC容器的web九大组件之---HandlerAdapter源码详解---一篇文章带你读懂返回值处理器HandlerMethodReturnValueHandler

    Spring MVC支持非常非常多的返回值类型,然后针对不同的返回值类型:比如Map、比如ViewName、比如Callable、比如异步的StreamingResponseBody等等都有其对应的处理器做处理 (因为StreamingResponseBody是Spring4.2才出来的~~~它很方便做文件下载) public class StreamingResponseBodyReturnValueHandler = null && StreamingResponseBody.class.isAssignableFrom(bodyType)); } return false; } @Override , returnValue, "StreamingResponseBody expected"); StreamingResponseBody streamingBody = (StreamingResponseBody streamingBody; public StreamingResponseBodyTask(OutputStream outputStream, StreamingResponseBody

    1.5K30发布于 2019-09-03
  • 来自专栏用户3206217的专栏

    【RuoYi-SpringBoot3-Pro】:接入 AI 对话能力

    *;importorg.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody;@RestController@RequestMapping ("/api/ai")publicclassAIController{@PostMapping("/chat/stream")publicResponseEntity<StreamingResponseBody

    32210编辑于 2026-01-08
  • 来自专栏玩转JavaEE

    Spring Boot 中如何统一 API 接口响应格式?

    StreamingResponseBodyReturnValueHandler 这个用来处理 StreamingResponseBody 或者 ResponseEntity<StreamingResponseBody

    1.8K10发布于 2021-04-01
  • 来自专栏JAVA乐园

    springmvc核心之HandlerMethodReturnValueHandler

    ResponseEntity<ResponseBodyEmitter> StreamingResponseBodyReturnValueHandler ResponseEntity<StreamingResponseBody

    47510编辑于 2022-06-30
  • 来自专栏JAVA乐园

    Spring mvc之HandlerMethodReturnValueHandler

    ResponseBodyEmitterReturnValueHandler ResponseEntity<ResponseBodyEmitter> StreamingResponseBodyReturnValueHandler ResponseEntity<StreamingResponseBody

    83520编辑于 2022-06-30
  • 来自专栏雨落秋垣

    使用 SpringBoot 简单的集成实时变声功能

    ).body("音色学习中,ID:"+voiceId);}@PostMapping(value="/change",produces="audio/wav")publicResponseEntity<StreamingResponseBody

    27010编辑于 2025-10-23
  • SpringBoot异步接口怎么实现?

    在springboot应用中,可以有4种方式实现异步接口(至于ResponseBodyEmitter、SseEmitter、StreamingResponseBody,不在本文介绍内,之后新写文章介绍)

    64410编辑于 2024-07-28
领券