Spring Boot中如何通过代码设置Tomcat的最大POST请求大小
为Spring Boot 2.5.7 Tomcat服务器设置最大POST请求大小
你可以通过自定义TomcatServletWebServerFactory来配置Tomcat的Connector,从而设置最大POST请求大小,以下是两种可行的代码实现方式:
方式一:使用WebServerFactoryCustomizer
创建配置类,通过WebServerFactoryCustomizer定制Tomcat工厂:
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory; import org.springframework.boot.web.server.WebServerFactoryCustomizer; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.apache.catalina.connector.Connector; @Configuration public class TomcatPostSizeConfig { @Bean public WebServerFactoryCustomizer<TomcatServletWebServerFactory> tomcatPostSizeCustomizer() { return factory -> { factory.addConnectorCustomizers((Connector connector) -> { // 设置最大POST请求大小为10MB(单位:字节) connector.setMaxPostSize(10 * 1024 * 1024); // 可选:设置Tomcat保存POST数据的最大大小,无需可忽略 // connector.setMaxSavePostSize(10 * 1024 * 1024); }); }; } }
方式二:直接定义TomcatServletWebServerFactory Bean
直接创建TomcatServletWebServerFactory实例并配置Connector:
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.apache.catalina.connector.Connector; @Configuration public class TomcatPostSizeConfig { @Bean public TomcatServletWebServerFactory tomcatServletWebServerFactory() { TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory(); factory.addConnectorCustomizers((Connector connector) -> { // 设置最大POST请求大小为10MB connector.setMaxPostSize(10 * 1024 * 1024); }); return factory; } }
额外说明
setMaxPostSize参数单位为字节,设置为-1表示不限制POST请求大小(Spring Boot 2.5.7配套的Tomcat 9.x版本支持此设置)。- 如果应用涉及文件上传(Multipart类型请求),除了Tomcat的配置,还需在配置文件中添加Spring MVC的Multipart限制:
# 单个文件最大大小 spring.servlet.multipart.max-file-size=10MB # 整个请求的最大大小 spring.servlet.multipart.max-request-size=10MB
内容的提问来源于stack exchange,提问作者Raman
相关产品推荐
相关产品推荐

