锋盈数科-知识库 Logo
首页
软件开发
计算机基础
Hello Halo
新手必读
关于本知识库
登录 →
锋盈数科-知识库 Logo
首页 软件开发 计算机基础 Hello Halo 新手必读 关于本知识库
登录
  1. 首页
  2. 软件开发
  3. JAVA
  4. SpringBoot整合web容器

SpringBoot整合web容器

0
  • JAVA
  • 发布于 2024-09-24
  • 11 次阅读
黄健
黄健

Spring是为简化Java开发而生的。与传统的如Sturts这样的框架相比,它采用最小侵入编程,让开发者更少的感知到它的存在。随着Spring越来越强大,Spring体系也越来越复杂。为了化解戴着镣铐跳舞的窘境,产生了SpringBoot。

SpringBoot的理念是约定大于配置。大家都这么用,有了规范,一切就容易多了。这就实现了一个标准化->流程化->工具化的跃迁。复杂度大大降低。但是一般一个web工具,引用一个jar包是搞不定的。依赖的冲突问题仍然是一个业界痛点。

一般一个web项目使用SpringBoot最好显示的引入5个jar包,其中最后两个是测试用的,请注意统一版本。

<dependency>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-autoconfigure</artifactId>    <version>${spring.boot.version}</version></dependency><dependency>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter-web</artifactId>    <version>${spring.boot.version}</version>    <exclusions>        <exclusion>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-logging</artifactId>        </exclusion>        <exclusion>            <groupId>org.springframework.boot</groupId>

            <artifactId>spring-boot-starter-tomcat</artifactId>

        </exclusion>    </exclusions></dependency><dependency>    <groupId>org.springframework.boot</groupId>

    <artifactId>spring-boot-starter-jetty</artifactId>

    <version>${spring.boot.version}</version></dependency><dependency>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-test</artifactId>    <version>${spring.boot.version}</version>    <scope>test</scope></dependency><dependency>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter-test</artifactId>    <version>${spring.boot.version}</version>    <scope>test</scope></dependency>

注意上面红色部分,显示的去掉对tomcat的依赖,使用jetty做容器。

嵌入式web容器和非嵌入式web容器的差别

这里想起自己在硅谷时的一件事情。

那时候公司里有一批同事都是之前netflix一个团队的,我刚到硅谷的时候,明显能感觉到他们的高傲。开始时,我出于习惯,那些同事在做一些事情的时候,我看到有些问题,我会告诉他们更好的方法和其中的原理。确实有许多我可以指导的地方,不是我技术有多好,而是他们都不是java出身的。对java没有那么精通。每次被我指出来问题,他们处理完总要露出鄙夷的面容,以后我就学聪明了,看到问题我也不说。

有次,有个同事问我国内用的什么web容器,我说用的tomcat。结果这个同事突然大笑,笑完还特意拉过来其他同事过来啥也不干就是一起笑。我问他们用的什么,他们也回答不上来。好吧,笑就笑吧,都是中国人,也不涉及什么有辱国威。我的人生已经彪悍的不需要解释了,压根就不在乎你们怎么看我。

后来有次,这个同事以为发现了我写的一个bug。所以拉上我,拉上很多开发一起围观再现我的bug。我们围在一起看他调试,结果我发现原来是他参数传错了。在他灰头土脸的时候,我只说了一句:“有问题再找我吧,我先回去了。”

因为我总是面对他们的质疑和嘲讽很低调,加上能干活,所以他们非常喜欢我,对我很nice,临走还特意给我饯行。签证到期回国再回来时,第一天他们就来找我,说我应该坐在他们中间,我们都是开发(只有我一个开发,其他都是产品,运营啥的)。总结一个经验:做人要低调,不要专门寻求认同,事情做好了自然有人认同你。

OK,先说他们为什么要笑:那是几年前的事情,那时候嵌入式的web容器在美国已经很流行了。但是那时候在国内,因为公司统一的标准还都是使用普通的web容器。一个新型的标准在大公司里普及确实没有这么快的。而嵌入式的web容器只是更便于DevOps,并没有什么性能和稳定性的差别。DevOps需要建立在公司统一基础设施的基础上,公司大了就有历史包袱,也是挺正常的。

有人说中国的互联网是国际领先的。这种领先是建立在需求驱动的基础上的。好比小时候我读《水浒》特别羡慕他们大口吃肉,现在我家小鲜肉早上给他煎牛排都已经不怎么吃了,天天换花样,劝饭这个费劲。现在物质发达,我倒觉得从这个方面看我小时候更幸福些,现在的小孩无欲无求。好比是硅谷,没有很强的外部驱动,有精力练就很扎实的基本功,很多人40多岁还是普通程序员。在中国工作两三年就带团队的大有人在,对程序员还是刚需,好像一个有很强消化能力的孩子。说不上哪个好哪个不好。

Tomcat和Jetty的差别

Tomcat和Jetty可以算的上是目前全球范围内最著名的两款Servlet容器。它们的实现都遵循Java Servlet规范。所以对于多数Java Web应用部署任意一个都可以。对应用开发来说,飞行中互换几乎是无感的。

从趋势来看,Jetty人气越来越盛。很大部分原因,大家在做选型的时候,都有一个业界调研,调研一线公司都是怎么用的。而目前Google App Engine选择了Jetty。这相当于是在云环境下,这是个默认的选择。

区别对照表

Jetty

Tomcat

轻量

√

×

节省内存

√

×

快速高效

√

×

可插拔性

√

×

可扩展性

√

×

支持大规模企业级应用高级特性

×

√

Jetty更满足分布式环境的需求,Tomcat有一些企业级环境使用的高级特性,一般用不到,用到时也是收费的。

结论:建议用Jetty。 

原文链接:https://mp.weixin.qq.com/s/3XzD8hyAkJrwRSmdAZEcLw

标签: #Spring Boot 173 #JAVA 991
相关文章

Spring 实现 3 种异步接口 2024-10-18 09:07

大家好,我是苏三~ 如何处理比较耗时的接口? 这题我熟,直接上异步接口,使用 Callable、WebAsyncTask 和 DeferredResult、CompletableFuture等均可实现。 但这些方法有局限性,处理结果仅返回单个值。在某些场景下,如果需要接口异步处理的同时,还持续不断地

重学SpringBoot3-集成Redis(五)之布隆过滤器 2024-10-08 11:24

更多SpringBoot3内容请关注我的专栏:《SpringBoot3》 期待您的点赞👍收藏⭐评论✍ 重学SpringBoot3-集成Redis(五)之布隆过滤器 1. 什么是布隆过滤器? * 基本概念 适用场景 2. 使用 Redis 实现布隆过滤器 * 项目依赖 Redis 配置

SpringBoot整合异步任务执行 2024-10-08 11:24

同步任务: 同步任务是在单线程中按顺序执行,每次只有一个任务在执行,不会引发线程安全和数据一致性等 并发问题 同步任务需要等待任务执行完成后才能执行下一个任务,无法同时处理多个任务,响应慢,影响用 户体验 异步任务: 异步任务是在多线程中同时执行,多个任务可以并发执行,同时处理多个请求,响应快,资源

springboot kafka多数据源,通过配置动态加载发送者和消费者 2024-10-08 11:24

前言 最近做项目,需要支持kafka多数据源,实际上我们也可以通过代码固定写死多套kafka集群逻辑,但是如果需要不修改代码扩展呢,因为kafka本身不处理额外逻辑,只是起到削峰,和数据的传递,那么就需要对架构做一定的设计了。 准备test kafka本身非常容易上手,如果我们需要单元测试,引入ja

SpringBoot 集成 Redis 2024-10-08 11:24

一:SpringBoot 集成 Redis ①Redis是一个 NoSQL(not only)数据库, 常作用缓存 Cache 使用。 ②Redis是一个中间件、是一个独立的服务器;常用的数据类型: string , hash ,set ,zset , list ③通过Redis客户端可以使用多种语

SpringBoot整合QQ邮箱 2024-10-08 11:24

SpringBoot可以通过导入依赖的方式集成多种技术,这当然少不了我们常用的邮箱,现在本章演示SpringBoot整合QQ邮箱发送邮件…. 下面按步骤进行: 1.获取QQ邮箱授权码 1.1 登录QQ邮箱 1.2 开启SMTP服务 找到下图中的SMTP服务区域,如果当前账号未开启的话自己手动开启。

目录

IT 外包服务商

  • 意见投递
  • zyf6619

软件开发应用

主菜单

  • 首页
  • 软件开发
  • 计算机基础
  • Hello Halo
  • 新手必读
  • 关于本知识库
Copyright © 2024 your company All Rights Reserved. Powered by Halo.