Spring Boot 2.1.3配置file-size-threshold绑定DataSize失败如何解决
问题产生原因
Spring Boot 2.1.0及以上版本对文件上传相关的大小配置做了类型重构,原先生效的长整型数值配置(默认单位为MB)被替换为org.springframework.util.unit.DataSize类型,2.1.x版本自带的字符串转DataSize转换器解析规则限制极多:
- 不会自动去除配置值首尾的空白字符(包括半角空格、制表符、全角空格等),从异常日志打印的配置值可以看到,配置项值
2KB末尾多了一个多余的半角空格,转换器无法识别带后缀空格的单位标识,直接抛出转换异常 - 强制要求数值和单位之间不能有任何间隔字符,单位仅支持大写标准后缀:
B、KB、MB、GB、TB,小写单位写法(如2kb、10mb)、数值单位中间加空格的写法(如2 KB)都无法被正常解析 - 未写单位的纯数值会被默认识别为字节数
修复方案
直接修正配置项的写法即可,去掉值首尾的所有多余空白,保证数值和单位直接拼接无间隔:
spring.servlet.multipart.file-size-threshold=2KB
如果修正后仍存在解析问题,可以直接写对应字节数,不需要加单位,不存在解析兼容问题:
# 2KB 等价于 2048 字节 spring.servlet.multipart.file-size-threshold=2048
修改完成后重启应用即可正常启动,不会再抛出配置绑定异常。
内容的提问来源于stack exchange,提问作者andrefilipeos
相关产品推荐
相关产品推荐

