聊聊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
对比一下可以清楚看到相关的改动

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM