zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    史记 · 码农列传
    死侍在新片中,扮演了一个 AI 驱动的 NPC
    什么是高中物理?一篇长长长长文告诉你!
    你管这玩意叫网络?
    你管这破玩意叫计算机?
    try-catch-finally中的4个巨坑,老程序员也搞不定!
    未来几年,软件测试九大新兴趋势
    代码中大量的if/else,你有什么优化方案?
    PHP部署服务端常见问题整理
    PHP服务端环境搭建
  • 原文地址:https://www.cnblogs.com/exmyth/p/15310483.html
Copyright © 2011-2022 走看看