Close

Spring MVC - ResponseBodyEmitter Examples

[Last Updated: Nov 9, 2025]

Spring MVC 

ResponseBodyEmitter is used for HTTP streaming.

package com.logicbig.example;

import org.springframework.http.MediaType;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyEmitter;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

@Controller
public class MyWebController {

@GetMapping(value = "/test")
public ResponseBodyEmitter handleRequest() {

final ResponseBodyEmitter emitter = new ResponseBodyEmitter();
ExecutorService service = Executors.newSingleThreadExecutor();
service.execute(() -> {
for (int i = 0; i < 100; i++) {
try {
emitter.send(i + " - ", MediaType.TEXT_PLAIN);

Thread.sleep(10);
} catch (Exception e) {
e.printStackTrace();
emitter.completeWithError(e);
return;
}
}
emitter.complete();
});

return emitter;
}
}
Original Post




ResponseBodyEmitter can be used as the body of ResponseEntity:

package com.logicbig.example;

import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyEmitter;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

@Controller
public class MyWebController2 {

@RequestMapping("/test2")
public ResponseEntity<ResponseBodyEmitter> handleRequest(
@RequestParam(value = "count", defaultValue = "500") int count) {
final ResponseBodyEmitter emitter = new ResponseBodyEmitter();
ExecutorService service = Executors.newSingleThreadExecutor();
service.execute(() -> {
for (int i = 0; i < count; i++) {
try {
emitter.send(i + " - ", MediaType.TEXT_PLAIN);

Thread.sleep(10);
} catch (Exception e) {
e.printStackTrace();
emitter.completeWithError(e);
return;
}
}
emitter.complete();
});

return new ResponseEntity(emitter, HttpStatus.OK);
}
}
Original Post




See Also

Join