• SpringBoot 2.0.0新版和SpringBoot1.5.2版本中Tomcat配置的差别(坑)


    2018年春SpringBoot 2.0.0 新版本有了很多新的改变,其中Tomcat配置上也有了很大改变
    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
    *
    */
    @Configuration
    public 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=4
    spring.server.minSpareThreads=50
    spring.server.maxSpareThreads=50
    spring.server.maxThreads=1000
    spring.server.maxConnections=10000
    #10秒超时
    spring.server.connectionTimeout=10000
    spring.server.protocol=org.apache.coyote.http11.Http11Nio2Protocol
    spring.server.redirectPort=443
    spring.server.compression=on
    #文件请求大小
    spring.server.MaxFileSize=300MB
    spring.server.MaxRequestSize=500MB

  • 相关阅读:
    java ssh整合报错:java.lang.NoSuchMethodError: antlr.collections.AST.getLine()I
    Ubuntu16.04安装搜狗输入法后有黑边问题的解决方法
    socket
    vim编辑器的使用
    linux用户和群组
    bash shell
    [LightOJ 1128]Greatest Parent
    [Luogu P4180][BJWC 2010]严格次小生成树
    函数、方法区别
    有关_meta内容(持续更新)
  • 原文地址:https://www.cnblogs.com/exmyth/p/15310483.html
Copyright © 2020-2023  润新知