前些天在开发SpringBoot项目的过程中,遇到了一个启动报错:
Failed to bind properties under 'spring.servlet.multipart.max-request-size' to org
经过查找资料和排查,终于解决了这个问题,现在和大家分享一下。
1.问题症状描述
在启动SpringBoot项目时,控制台输出如下错误信息:
Failed to bind properties under 'spring.servlet.multipart.max-request-size' to org.springframework.boot.autoconfigure.web.servlet.MultipartProperties$FileSize:
Property: spring.servlet.multipart.max-request-size
Value: 10240KB
Reason: The size 10240KB is not in the set of values []
2.问题原因
出现该问题的原因是在application.properties文件中设置了spring.servlet.multipart.max-request-size
参数,但是设置的值不在预设的范围内。
spring.servlet.multipart.max-request-size
是SpringBoot提供的文件上传限制参数,用于限制上传文件的大小。它有一个默认值为1MB,可以在application.properties中进行修改。一般我们会将其设置为一个较大的值,以便上传大文件。
3.解决方法
通过查阅SpringBoot官方文档,我们发现该参数的默认值为-1,表示不限制文件大小。因此,我们可以将其设置为-1即可解决问题。
在application.properties文件中添加如下配置:
spring.servlet.multipart.max-request-size=-1
或者在application.yml文件中添加如下配置:
spring:
servlet:
multipart:
max-request-size: -1
修改后,再次启动项目,发现启动成功了。
4.总结
通过这次解决问题的过程,我们了解了SpringBoot提供的文件上传限制参数,以及设置该参数可能会出现的问题及解决办法。希望本篇分享能够帮助到大家。
完整的application.properties文件如下:
# 应用名称
spring.application.name=demo
# 服务端口
server.port=8080
# 文件上传限制
spring.servlet.multipart.enabled=true
spring.servlet.multipart.max-file-size=512MB
spring.servlet.multipart.max-request-size=-1
# 数据源配置
spring.datasource.url=jdbc:mysql://localhost:3306/demo?useSSL=false&serverTimezone=UTC&characterEncoding=utf-8
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# MyBatis配置
mybatis.mapper-locations=classpath:mapper/*.xml