Я ищу способ улучшить службу весенней загрузки, особенно потребление памяти.С двоичными данными лучше всего передавать их от источника к ответу по сравнению с загрузкой всего 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);
}
Но я также храню некоторые двоичные данные в mongodb, используя тип th org.bson.types.Binary
.У меня вопрос, будет ли это загружаться в память в любом случае, когда я загружаю «Документ» или есть способ потоковой передачи его с mongodb напрямую?
Я только вижу, что на * есть метод getData()
1009 *, который уже является byte[]
.