首页 > 其他分享 >大公司为什么禁止SpringBoot项目使用Tomcat?

大公司为什么禁止SpringBoot项目使用Tomcat?

时间:2023-05-14 10:35:52浏览次数:43  
标签:Web 禁止 Undertow SpringBoot Tomcat 容器 Java

前言

在SpringBoot框架中,我们使用最多的是Tomcat,这是SpringBoot默认的容器技术,而且是内嵌式的Tomcat。同时,SpringBoot也支持Undertow容器,我们可以很方便的用Undertow替换Tomcat,而Undertow的性能和内存使用方面都优于Tomcat,那我们如何使用Undertow技术呢?本文将为大家细细讲解。

SpringBoot中的Tomcat容器

SpringBoot可以说是目前最火的Java Web框架了。它将开发者从繁重的xml解救了出来,让开发者在几分钟内就可以创建一个完整的Web服务,极大的提高了开发者的工作效率。Web容器技术是Web项目必不可少的组成部分,因为任Web项目都要借助容器技术来运行起来。在SpringBoot框架中,我们使用最多的是Tomcat,这是SpringBoot默认的容器技术,而且是内嵌式的Tomcat。

SpringBoot设置Undertow

对于Tomcat技术,Java程序员应该都非常熟悉,它是Web应用最常用的容器技术。我们最早的开发的项目基本都是部署在Tomcat下运行,那除了Tomcat容器,SpringBoot中我们还可以使用什么容器技术呢?没错,就是题目中的Undertow容器技术。SrpingBoot已经完全继承了Undertow技术,我们只需要引入Undertow的依赖即可,如下图所示。推荐:最全面的Java面试网站

配置好以后,我们启动应用程序,发现容器已经替换为Undertow。那我们为什么需要替换Tomcat为Undertow技术呢?

本文已经收录到Github仓库,该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校招社招分享等核心知识点,欢迎star~

Github地址

如果访问不了Github,可以访问gitee地址。

gitee地址

Tomcat与Undertow的优劣对比

Tomcat是Apache基金下的一个轻量级的Servlet容器,支持Servlet和JSP。Tomcat具有Web服务器特有的功能,包括 Tomcat管理和控制平台、安全局管理和Tomcat阀等。Tomcat本身包含了HTTP服务器,因此也可以视作单独的Web服务器。但是,Tomcat和ApacheHTTP服务器不是一个东西,ApacheHTTP服务器是用C语言实现的HTTP Web服务器。Tomcat是完全免费的,深受开发者的喜爱。

Undertow是Red Hat公司的开源产品, 它完全采用Java语言开发,是一款灵活的高性能Web服务器,支持阻塞IO和非阻塞IO。由于Undertow采用Java语言开发,可以直接嵌入到Java项目中使用。同时, Undertow完全支持Servlet和Web Socket,在高并发情况下表现非常出色。

我们在相同机器配置下压测Tomcat和Undertow,得到的测试结果如下所示:QPS测试结果对比: Tomcat

Undertow

内存使用对比:

Tomcat

Undertow

通过测试发现,在高并发系统中,Tomcat相对来说比较弱。在相同的机器配置下,模拟相等的请求数,Undertow在性能和内存使用方面都是最优的。并且Undertow新版本默认使用持久连接,这将会进一步提高它的并发吞吐能力。所以,如果是高并发的业务系统,Undertow是最佳选择。

最后

SpingBoot中我们既可以使用Tomcat作为Http服务,也可以用Undertow来代替。Undertow在高并发业务场景中,性能优于Tomcat。所以,如果我们的系统是高并发请求,不妨使用一下Undertow,你会发现你的系统性能会得到很大的提升。

好东西应该要分享出来!我把自己学习计算机多年以来的书籍分享出来了,汇总到一个计算机经典编程书籍仓库了,一共300多本,包括C语言、C++、Java、Python、前端、数据库、操作系统、计算机网络、数据结构和算法、机器学习、编程人生等,可以star一下,下次找书直接在上面搜索,仓库持续更新中~

Github地址

标签:Web,禁止,Undertow,SpringBoot,Tomcat,容器,Java
From: https://www.cnblogs.com/tyson03/p/17398838.html

相关文章

  • java基于springboot基于vue的地方美食分享网站、美食管理系统,附源码+数据库+lw文档+PP
    1、项目介绍java基于springboot基于vue的地方美食分享网站、美食管理系统。(a)管理员;管理员使用本系统涉到的功能主要有:首页,个人中心,用户管理,外国美食管理,中式美食管理,热门菜品管理,论坛管理,我的收藏管理,留言板管理等功能。(b)用户;用户使用本系统涉到的功能主要有:首页,外国美食,......
  • Springboot集成mybatis
    目的利用Springboot快速集成Mybatis。集成步骤引入依赖在pom文件中加入:<dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.1.0</version></dependency&......
  • [springboot] 上传文件时,报"org.apache.tomcat.util.http.fileupload.impl.FileSizeLi
    1问题描述基于springmvc/springboot的MultipartFile接口实现上传文件功能时,报如下错误日志[2023/05/1322:31:54.732][TID:N/A][INFO][http-nio-8769-exec-5][AccessPathWebFilter.java:85doFilter][3-4]request-path:http://love.pfr.kim/user-service/v1/file-re......
  • springboot项目
    1.根据数据库先把User类写完:publicclassUser{privateintid;privateStringusername;privateStringpassword;privateStringemail;privateStringrole;privatebooleanstate;将其实例化后写一个空方法,写get和set方法和tostring方法到此bean......
  • 关于SpringBoot应用的启动状态检查
    关于SpringBoot启动状态的检查背景:当项目由多个SpringBoot的jar包构成,为简化启动流程,写了一个启动脚本,执行脚本的start命令即可启动多个SpringBoot的jar包。原先的启动状态的判断是使用进程号和端口号来判断的,但是这种判断方式对于SpringBoot程序来说并不准确。当服务器的内存为......
  • springboot 低于 2.6 版本设置 SameSite=None,springboot 1.x set SameSite=none in em
    speingboot使用自带的tomcat运行,设置SameSite。springboot过低的版本没有SameSite的属性设置,升级到1.5.22版本后,虽然Rfc6265CookieProcessor有 setSameSiteCookies方法,但是方法逻辑有BUG,当不是None时才可以设置成功:SameSiteCookiessameSiteCookiesValue=thi......
  • Springboot 开启异步任务Async,邮件发送任务,定时任务
    异步任务1.主启动类开启异步注解 2.service目录下开启异步任务注解@ServicepublicclassAsyncService{@Async//异步任务注解的标志publicvoidhello(){try{Thread.sleep(3000);}catch(InterruptedExceptione){......
  • SpringBoot整合Mybatis
    SpringBoot整合MyBatisSpringBoot整合MyBatisSpringBoot是一个快速开发应用程序的框架,而MyBatis是一个提供ORM支持的优秀框架。在本文中,我们将学习如何将SpringBoot与MyBatis整合,以便我们能够更加轻松地开发Web应用程序。步骤创建新的SpringBoot项目。在pom.xml文件中添加My......
  • java基于springboot+vue的农机电招平台、农机租赁管理系统,附源码+数据库+文档+PPT,适合
    1、项目介绍该系统包括前台操作和后台管理两个部分,一方面,为用户提供首页,农机,系统公告,个人中心,后台管理等功能;另一方面,为管理员提供首页,个人中心,农机机主管理,使用者管理,农机类型管理,农机管理,农机预约管理,系统管理等功能。项目获取,看这里2、技术框架编程语言:java系统架构:B/S......
  • SpringBoot 依赖注入方式
    前置知识SpringDI(DependencyInjection)依赖注入:组件之间依赖关系由容器在运行期间决定,即由容器动态的将某个依赖关系注入到组件中谁依赖谁:应用程序依赖IOC容器为什么需要依赖:应用程序需要IOC容器提供对象需要的外部资源谁注入谁:IOC容器注入应用程序某个对象,应用程序依赖的......