我正在寻找一种改善弹簧启动服务的方法,尤其是内存消耗。与二进制数据相比,最好将它们从源流传输到响应,相比之下,将整个byte[]
加载到内存中。
对于文件系统中的文件,这很容易(只是一个愚蠢的例子):
@GetMapping("/download/{fileName}")
public ResponseEntity<FileSystemResource > downloadFile(@PathVariable("fileName") String fileName) {
FileSystemResource fileResource= new FileSystemResource(STORAGE_LOCATION + fileName);
HttpHeaders headers = new HttpHeaders();
headers.setContentDisposition(ContentDisposition.parse("attachment; filename=" + fileName));
headers.setContentLength(fileResource.contentLength());
return new ResponseEntity<>(fileResource, headers, HttpStatus.OK);
}
但是我也使用org.bson.types.Binary
类型在mongodb中存储了一些二进制数据。我的问题是,当我加载“文档”时,还是将其加载到内存中?还是可以直接从mongodb中流式传输?
我只看到getData()
上已有一个Binary
的{{1}}方法。