• 注册
当前位置:1313e > 默认分类 >正文

聊聊springboot2的embeded container的配置改动

为什么80%的码农都做不了架构师?>>>   hot3.png

本文主要研究下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{@Overridepublic void customize(ConfigurableEmbeddedServletContainer container) {TomcatEmbeddedServletContainerFactory factory = (TomcatEmbeddedServletContainerFactory)container;factory.addConnectorCustomizers(new TomcatConnectorCustomizer() {@Overridepublic 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 {@Overridepublic void customize(ConfigurableServletWebServerFactory factory) {((TomcatServletWebServerFactory)factory).addConnectorCustomizers(new TomcatConnectorCustomizer() {@Overridepublic 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

对比一下可以清楚看到相关的改动

doc

  • boot-features-programmatic-embedded-container-customization

转载于:https://my.oschina.net/go4it/blog/1801604

本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 162202241@qq.com 举报,一经查实,本站将立刻删除。

最新评论

欢迎您发表评论:

请登录之后再进行评论

登录