Search code examples
spring-mvcinputstream

How to handle IO streams in Spring MVC


I have a method which returns ResponseEntity(InputStreamResource). In this method, I'm getting InputStream from a file based on the filename input and then sending InputStreamResource as a response.

Code snippet

InputStream inputStream = ...;    
ResponseEntity<InputStreamResource> response = new ResponseEntity<InputStreamResource>(new InputStreamResource(inputStream), headers, HttpStatus.OK);
return response;

Here do I need to close inputStream object? If I do so, I'm getting

IllegalStateException: Closed message.

Do I need to explicitly close them or container will take care.


Solution

  • The underlying class where this is handled is ResourceHttpMessageConverter and it closes the underlying input stream as is evident from here