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

  • 相关阅读:
    Java+7入门经典 -1 简介
    优化算法动画演示Alec Radford's animations for optimization algorithms
    如何写科技论文How to write a technical paper
    开始学习深度学习和循环神经网络Some starting points for deep learning and RNNs
    用500行Julia代码开始深度学习之旅 Beginning deep learning with 500 lines of Julia
    用10张图来看机器学习Machine learning in 10 pictures
    ICLR 2013 International Conference on Learning Representations深度学习论文papers
    ICLR 2014 International Conference on Learning Representations深度学习论文papers
    卷积神经网络CNN(Convolutional Neural Networks)没有原理只有实现
    卷积神经网络Convolutional Neural Networks
  • 原文地址:https://www.cnblogs.com/exmyth/p/15310483.html
Copyright © 2011-2022 走看看