首页 > 解决方案 > 使用 spring 的 AbstractXlsxView 下载大文件

问题描述

我正在使用 spring 的 AbstractXlsxView 来下载一个大文件。下面是 AbstractXlsxView 实现和控制器方法的代码。

class ExcelView extends AbstractXlsxView {

@Override
protected void buildExcelDocument(Map<String, Object> map, Workbook workbook, 
     HttpServletRequest request, HttpServletResponse response) throws Exception { 
    //logic here...
}}

class ExportController {

@PostMapping("/report.xlsx")
public View downloadReport() throws SQLException {
        ExcelView view = exportDataService.getReport();
        return view;
}}

使用这种方法,我面临大文件(~1GB)的堆 outOfMemory错误。有什么办法可以修改这种方法以适应大文件(写入输出流而不是将所有内容都保存在内存中)?

标签: javaspringspring-boot

解决方案


推荐阅读