本文共 4566 字,大约阅读时间需要 15 分钟。
1、之前老的版本TomcatEmbeddedServletContainerFactory取的是这个类
2、在SpringBoot 2.0.0框架中,已经没有类TomcatEmbeddedServletContainerFactory了
3、在老版本的Tomcat配置中,构造tomcatFactory的bean
@Bean public TomcatEmbeddedServletContainerFactory tomcatFactory() { TomcatEmbeddedServletContainerFactory tomcatFactory = new TomcatEmbeddedServletContainerFactory(); tomcatFactory.addConnectorCustomizers(new GwsTomcatConnectionCustomizer()); return tomcatFactory; }
4、那么早SpringBoot 2.0.0中该怎么构建呢?
去到SpringBoot官方文档、找到Tomcat配置 5、最新的已经有了全新的类了6、事例
7、那么就可以用全新的ServletWebServerFactory类来构造Tomcat的配置了
@Bean public ServletWebServerFactory servletContainer() { TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory(); tomcat.addConnectorCustomizers(new GwsTomcatConnectionCustomizer()); return tomcat; }
8、最后附上全新的Tomcat配置
package com.gws.configuration;import org.apache.catalina.connector.Connector;import org.springframework.beans.factory.annotation.Value;import org.springframework.boot.web.embedded.tomcat.TomcatConnectorCustomizer;import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;import org.springframework.boot.web.servlet.MultipartConfigFactory;import org.springframework.boot.web.servlet.server.ServletWebServerFactory;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import javax.servlet.MultipartConfigElement;/** * 使用tomcat配置 * * @version * @author * */@Configurationpublic class TomcatConfig { @Value("${spring.server.port}") private String port; @Value("${spring.server.acceptorThreadCount}") private String acceptorThreadCount; @Value("${spring.server.minSpareThreads}") private String minSpareThreads; @Value("${spring.server.maxSpareThreads}") private String maxSpareThreads; @Value("${spring.server.maxThreads}") private String maxThreads; @Value("${spring.server.maxConnections}") private String maxConnections; @Value("${spring.server.protocol}") private String protocol; @Value("${spring.server.redirectPort}") private String redirectPort; @Value("${spring.server.compression}") private String compression; @Value("${spring.server.connectionTimeout}") private String connectionTimeout; @Value("${spring.server.MaxFileSize}") private String MaxFileSize; @Value("${spring.server.MaxRequestSize}") private String MaxRequestSize; @Bean public ServletWebServerFactory servletContainer() { TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory(); tomcat.addConnectorCustomizers(new GwsTomcatConnectionCustomizer()); return tomcat; } @Bean public MultipartConfigElement multipartConfigElement() { MultipartConfigFactory factory = new MultipartConfigFactory(); // 单个数据大小 factory.setMaxFileSize(MaxFileSize); // KB,MB /// 总上传数据大小 factory.setMaxRequestSize(MaxRequestSize); return factory.createMultipartConfig(); } /** * * 默认http连接 * * @version * @author liuyi 2016年7月20日 下午7:59:41 * */ public class GwsTomcatConnectionCustomizer implements TomcatConnectorCustomizer { public GwsTomcatConnectionCustomizer() { } @Override public void customize(Connector connector) { connector.setPort(Integer.valueOf(port)); connector.setAttribute("connectionTimeout", connectionTimeout); connector.setAttribute("acceptorThreadCount", acceptorThreadCount); connector.setAttribute("minSpareThreads", minSpareThreads); connector.setAttribute("maxSpareThreads", maxSpareThreads); connector.setAttribute("maxThreads", maxThreads); connector.setAttribute("maxConnections", maxConnections); connector.setAttribute("protocol", protocol); connector.setAttribute("redirectPort", "redirectPort"); connector.setAttribute("compression", "compression"); } }}
9、最后在application.properties,进行配置
#嵌入tomcat配置spring.server.port=8095#和CPU数spring.server.acceptorThreadCount=4spring.server.minSpareThreads=50spring.server.maxSpareThreads=50spring.server.maxThreads=1000spring.server.maxConnections=10000#10秒超时spring.server.connectionTimeout=10000spring.server.protocol=org.apache.coyote.http11.Http11Nio2Protocolspring.server.redirectPort=443spring.server.compression=on#文件请求大小spring.server.MaxFileSize=300MBspring.server.MaxRequestSize=500MB
10、好了,搞定了