本文主要研究下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

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

转载于:https://www.cnblogs.com/JAYIT/p/10863147.html

聊聊springboot2的embeded container的配置改动相关推荐

  1. 注解不自动导包_玩转SpringBoot2.X:SpringBoot自动配置原理大揭秘

    我们在使用SpringBoot的时候,是不是觉得特方便,根本不需要我们去配置什么端口号,应用名称,又比如我们再整合redis的时候,其实也不需要我们去指定端口号,IP,都会有默认的.是不是特方便.那么 ...

  2. python json key_最全总结 | 聊聊 Python 数据处理全家桶(配置篇)

    1.前言 在实际项目中,经常会接触到各种各样的配置文件,它可以增强项目的可维护性 常用配件文件的处理方式,包含:JSON.ini / config.YAML.XML 等 本篇文章,我们将聊聊 Pyth ...

  3. docker container DNS配置介绍和源码分析

    2019独角兽企业重金招聘Python工程师标准>>> 本文主要介绍了docker容器的DNS配置及其注意点,重点对docker 1.10发布的embedded DNS server ...

  4. springboot2.0 的ssl证书配置

    当你不知道怎么做的时候,做什么都不知道从何下手... 看了很多前人的文章,终于找到了配置方法!自己记录一份自己配置留下的,才是自己的,打一针预防针! 我这个是在阿里云申请的ssl证书,申请的时候是绑定 ...

  5. SpringBoot2.0 jpa多数据源配置

    随着Springboot升级到2.0,原来1.5.x的Jpa多数据源配置不能用了.现在总结一下Springboot2.0的jpa多数据源配置 连接池还是用druid,但是不能用druid的starte ...

  6. SpringBoot2/SpringBoot/Java动态数据源配置、动态连接池配置、多数据源负载均衡

    Java动态数据源配置.动态连接池配置.多数据源负载均衡 大家好,今天给大家推荐一个自产的连接池插件.废话不多说,本文接口分为以下主题: 1. 插件开发背景: 2. 插件提供的能力: 3. 插件的使用 ...

  7. 最全总结 | 聊聊 Python 数据处理全家桶(配置篇)

    聊聊 Python 数据处理全家桶(Memca 篇) 点击上方"菜鸟学Python",选择"星标"公众号 重磅干货,第一时间送达 1.前言 在实际项目中,经常会 ...

  8. springboot2.0系列(二):配置属性

    为什么80%的码农都做不了架构师?>>>    前言 Spring Boot中核心思想:约定优于配置.那到底什么是约定优于配置? 约定优于配置(convention over con ...

  9. SpringBoot笔记:SpringBoot2.3集成Kafka组件配置

    文章目录 说明 Springboot集成Kafka 依赖配置 配置文件yml配置 Producer生产者 Consumer消费者 测试代码 注意事项 说明 本文是接<Kafka学习:CentOS ...

最新文章

  1. (0107)iOS开发之UI实时调试InjectionIII的使用
  2. 新网站是如何吸引蜘蛛进行爬取的?
  3. django学习之Model(四)MakingQuery
  4. Android背景色渐变效果(shape,gradient) (转)
  5. Latex可能遇到的一些问题
  6. 高速收发器之8B/10B编码
  7. JavaScript页面跳转常用代码(转)
  8. 帧同步分离逻辑层和渲染层_帧同步如何分离逻辑和渲染?
  9. 拓端tecdat|R语言中实现广义相加模型GAM和普通最小二乘(OLS)回归
  10. 马里兰帕克分校计算机科学,马里兰大学帕克分校管理信息系统(MIS)专业详解...
  11. Couldn't connect to host, port: localhost, 25; timeout -1;
  12. 咖说 | 「延展与重构」数字艺术的新可能
  13. 文件上传upload-labs第四关
  14. Python 执行 JS 代码 —— PyExecJS
  15. educoder 国标码转区位码实验(详细)
  16. 计算机导论——多媒体技术04
  17. 【解决】android设备有root权限,执行“adb disable-verity”命令报错“verity cannot be disabled/enabled - USER build”
  18. 挖掘机销售业务员如何做好客户接触及拜访工作
  19. react-native集成阿里云金融实人认证获取当前viewController
  20. HashMap 源码深度分析

热门文章

  1. Android中四种启动模式,最容易理解的小白教程
  2. hadoop rebalance
  3. Java 获得方法调用者名称
  4. 逆向辅导:让你的IT文化恢复活力的独特方法
  5. 数据库视频总结三(游标和事务)
  6. mysql 修改表结构提示 MySQL said: Table is read only
  7. linux下vim 打开文件方式
  8. android 继承dialog自定义对话框
  9. 一道关于Java并发的面试题
  10. Android --- 微信支付时出现错误:错误的签名,验签失败,return_code=FAIL