zoukankan      html  css  js  c++  java
  • 聊聊springboot2的embeded container的配置改动

    本文主要研究下springboot2的embeded container的配置改动

    springboot 1.x

    import org.apache.catalina.connector.Connector;
    import org.apache.coyote.ProtocolHandler;
    import org.apache.coyote.http11.Http11NioProtocol;
    import org.apache.tomcat.util.threads.ThreadPoolExecutor;
    import org.springframework.boot.context.embedded.ConfigurableEmbeddedServletContainer;
    import org.springframework.boot.context.embedded.EmbeddedServletContainerCustomizer;
    import org.springframework.boot.context.embedded.tomcat.TomcatConnectorCustomizer;
    import org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory;
    import org.springframework.boot.web.servlet.ErrorPage;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.http.HttpStatus;
    import org.springframework.stereotype.Component;
    
    
    @Component
    public class EmbeddedTomcatConfig implements EmbeddedServletContainerCustomizer{
    
        @Override
        public void customize(ConfigurableEmbeddedServletContainer container) {
            TomcatEmbeddedServletContainerFactory factory = (TomcatEmbeddedServletContainerFactory)container;
            factory.addConnectorCustomizers(new TomcatConnectorCustomizer() {
                @Override
                public void customize(Connector connector) {
                    Http11NioProtocol protocol = (Http11NioProtocol) connector.getProtocolHandler();
                    protocol.setMaxConnections(200);
                    protocol.setMaxThreads(200);
                    protocol.setSelectorTimeout(3000);
                    protocol.setSessionTimeout(3000);
                    protocol.setConnectionTimeout(3000);
                }
            });
        }
    }
    通过实现org.springframework.boot.context.embedded.EmbeddedServletContainerCustomizer的customize方法来实现自定义

    springboot 2.x

    import org.apache.catalina.connector.Connector;
    import org.apache.coyote.ProtocolHandler;
    import org.apache.coyote.http11.Http11NioProtocol;
    import org.apache.tomcat.util.threads.ThreadPoolExecutor;
    import org.springframework.boot.web.embedded.tomcat.TomcatConnectorCustomizer;
    import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
    import org.springframework.boot.web.server.WebServerFactoryCustomizer;
    import org.springframework.boot.web.servlet.server.ConfigurableServletWebServerFactory;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.core.Ordered;
    import org.springframework.stereotype.Component;
    
    
    @Component
    public class EmbeddedTomcatConfig implements WebServerFactoryCustomizer<ConfigurableServletWebServerFactory> {
    
        @Override
        public void customize(ConfigurableServletWebServerFactory factory) {
            ((TomcatServletWebServerFactory)factory).addConnectorCustomizers(new TomcatConnectorCustomizer() {
                @Override
                public void customize(Connector connector) {
                    Http11NioProtocol protocol = (Http11NioProtocol) connector.getProtocolHandler();
                    protocol.setMaxConnections(200);
                    protocol.setMaxThreads(200);
                    protocol.setSelectorTimeout(3000);
                    protocol.setSessionTimeout(3000);
                    protocol.setConnectionTimeout(3000);
                }
            });
        }
    }
    在2.x版本改为实现org.springframework.boot.web.server.WebServerFactoryCustomizer接口的customize方法

    小结

    springboot1.x的相关类如下:

    • org.springframework.boot.context.embedded.ConfigurableEmbeddedServletContainer
    • org.springframework.boot.context.embedded.EmbeddedServletContainerCustomizer
    • org.springframework.boot.context.embedded.tomcat.TomcatConnectorCustomizer
    • org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory

    springboot2.x的相关类如下:

    • org.springframework.boot.web.servlet.server.ConfigurableServletWebServerFactory
    • org.springframework.boot.web.server.WebServerFactoryCustomizer
    • org.springframework.boot.web.embedded.tomcat.TomcatConnectorCustomizer
    • org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory
    对比一下可以清楚看到相关的改动
  • 相关阅读:
    struts2 标签为简单标签
    html a标签链接使用action 参数传递中文乱码
    html 字体加粗
    Unity3D学习笔记(一):Unity简介、游戏物体、组件和生命周期函数
    Unity3D学习笔记(一):Unity3D简介 111
    C#学习笔记(二十):C#总结和月考讲解
    C#学习笔记(十九):字典
    C#学习笔记(十八):数据结构和泛型
    C#学习笔记(十七):委托、事件、观察者模式、匿名委托和lambert表达式
    C#学习笔记(十六):索引器和重载运算符
  • 原文地址:https://www.cnblogs.com/JAYIT/p/10863147.html
Copyright © 2011-2022 走看看