如何在 spring boot 2 中设置 max-swallow-size?

How to set max-swallow-size in spring boot 2?

我试图在升级到 springboot 版本 2 时在 springboot 微服务中将 max-swallow-size 属性 of tomcat 设置为 -1;我之前的代码可以正常工作,但在升级过程中一些 类 发生了变化,所以它停止工作了。

我尝试用两种方式设置 属性,但都不起作用;

  1. 有服务配置
@Bean
public ServletWebServerFactory servletContainerFactory() {

        TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory();

        factory.addConnectorCustomizers(new TomcatConnectorCustomizer() {
            @Override
            public void customize(Connector connector) {
                if(connector.getProtocolHandler() instanceof AbstractHttp11Protocol) {
                    logger.debug("Setting maxSwallowSize for server connector as "+maxSwallowSize);
                    ((AbstractHttp11Protocol <?>) connector.getProtocolHandler()).setMaxSwallowSize(maxSwallowSize);
                }
            }
        });

        return factory;
    }

在控制流中,我可以看到打印的调试行,但它没有生效,因为端点响应是 502(错误的网关)而不是 400

第二种方式: 2. 通过 application.properties 文件 属性

server.tomcat.max-swallow-size=-1

这也不兑现。

现在,我如何验证 属性 值是否已实际设置? 或者我是否以正确的方式设置值?

这个新 class 解决了我的问题

@Component
public class TomcatCustomizer implements
WebServerFactoryCustomizer<TomcatServletWebServerFactory> {

    @Override
    public void customize(TomcatServletWebServerFactory factory) {

        factory.addConnectorCustomizers(new TomcatConnectorCustomizer() {
            @Override
            public void customize(Connector connector) {
                if(connector.getProtocolHandler() instanceof AbstractHttp11Protocol) {
                    ((AbstractHttp11Protocol <?>) connector.getProtocolHandler()).setMaxSwallowSize(maxSwallowSize);
                }
            }
        });
    }
}

并且我在 spring boot 2.0

中使用了更新的属性
spring.servlet.multipart.max-file-size= XX MB
spring.servlet.multipart.max-request-size= YY MB