花了一天时间在处理一个Excel数据上传,但数据总是提交不全的问题。
Excel解析出的内容差不多 5000 行,每行大概 10 列,也就是 5W 左右个数据。
整个过程需要上传、预览、建立字段映射后,再提交,保存到数据库。
这个吐血的Bug,前前后后差不多调试了5、6个小时。
前面的几步统统SO Easy,轻松解决,但是提交这5W个数据时,遇到一个坑。
SpringMVC 接收List/数组大小默认限制为256个
简单搜索下网页,轻松找到了解决办法。
在需要问题发生的Controller中,增加
@InitBinder
protected void initBinder(WebDataBinder binder) {
binder.setAutoGrowNestedPaths(true);
binder.setAutoGrowCollectionLimit(Integer.MAX_VALUE);
}
考虑不想以后再重复处理,将这段代码放到了@ControlerAdvice标注的全局Controller异常处理器类中。
网上给出的全局配置比较麻烦,官方文档给出的是基于XML的配置方法,考虑项目使用的SpringBoot,想参考做Java Config没成功。
试着放到@ControlerAdvice标注的类中,貌似成功了,后来又搜了一遍官方文档:
@Controller or @ControllerAdvice classes can have @InitBinder methods that initi