简单总结Tomcat/SpringMVC/Spring/SpringBoot的关系

Tomcat是一个Web应用服务器,可以作为Servlet容器。它的作用是,解析客户端client发起的request,并组装出HttpRequest、创建HttpResponse,将二者交于内部的HttpServlet处理和填充,如图所示

简单总结Tomcat/SpringMVC/Spring/SpringBoot的关系

(图源见参考文档1)

Tomcat映射处理请求的Servlet是通过web.xml做的。

SpringMVC使用一个DispatcherServlet来接收所有的请求,并把它们分发到不同的controller中来做进一步处理。

SpringMVC = Spring + Web框架,Spring这部分主要是AOP/IOC容器。

SpringBoot是Spring的扩展,简化了Spring的配置,通过starter的方式简化了常用组件依赖的引入,使其更加易用。

SpringBoot内置了tomcat。

参考文档:
SpringMVC、Tomcat怎样完成一次Http请求的?
Spring与SpringMVC的区别
SpringBoot:简述SpringBoot和Spring的区别
SpringBoot内置tomcat启动原理

Original: https://www.cnblogs.com/wuyuegb2312/p/12970114.html
Author: 五岳
Title: 简单总结Tomcat/SpringMVC/Spring/SpringBoot的关系

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/541844/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 图解|用好MySQL索引,你需要知道的一些事情

    我是蝉沐风。 这一篇文章来聊一聊如何用好MySQL索引。 为了更好地进行解释,我创建了一个存储引擎为InnoDB的表 user_innodb,并批量初始化了500W+条数据。包含主…

    Java 2023年6月7日
    075
  • centos7 安装 certbot 动态更新Let’s encrypt 证书实现nginx免费ssl证书

    先更新内核,然后安装nginx。启用bbr。 yum install yum-utils vim -y vim /etc/yum.repos.d/nginx.repo 输入: su…

    Java 2023年5月30日
    073
  • 数据结构:跳跃链表

    关注公众号,一起交流,微信搜一搜: 潜行前行 什么是跳跃链表 开发时经常使用的平衡数据结构有B数、红黑数,AVL数。但是如果让你实现其中一种,很难,实现起来费时间。而跳跃链表一种基…

    Java 2023年6月5日
    095
  • java.lang.NoClassDefFoundError: Could not initialize class sun.awt.X11GraphicsEnvironment

    请求验证码时后台报错:java.lang.NoClassDefFoundError: Could not initialize class sun.awt.X11GraphicsE…

    Java 2023年5月29日
    0119
  • Spring核心知识概述

    目录:1. IOC理论2. IOC创建对象的方式3. Spring配置4. 依赖注入5. Bean的自动装配6. 使用注解开发7. 使用纯java配置Spring8. Spring…

    Java 2023年6月5日
    070
  • Spring(九):Bean的自动装配

    一、Bean装配的方式 在Spring中Bean有三种装配的方式: 1.在xml中显式的配置。 2.在java中显式的配置。 3.隐式的自动装配。 前面我们一直在用的都是第一种xm…

    Java 2023年6月15日
    068
  • Spring Cloud Gateway 请求日志记录

    https://docs.spring.io/spring-cloud-gateway/docs/2.2.6.RELEASE/reference/html/#reactor-net…

    Java 2023年5月30日
    081
  • Java数组-2022年4月17日

    ArrayList概念:一个连续的空间,存储多个相同数据类型的值特点:1. 类型相同2. 长度固定数组的创建 数组类型[] 数组名 = new 数组类型[数组长度]; //长度大小…

    Java 2023年6月5日
    069
  • 西门子PLC数据读取 Observer设计模式

    当我听到这个需求的时候,我差点爆粗口(实际上可能已经爆了,不过我忘了)。 需求刚开始是: C#连接PLC Modbus读取值。 我用C#写完了,觉得太简单了,还弄了个窗体。 接着是…

    Java 2023年6月9日
    071
  • netty搭建rpc框架

    netty想必大家都不陌生,我就不废话介绍了…(主要是懒,网上资料很多的) 本文主要使用netty搭建rpc远程调用框架,实现了个注册中心微服务,整合了springbo…

    Java 2023年6月7日
    085
  • 线程中的sleep方法

    线程中的sleep方法 线程中的sleep方法 一、关于线程的sleep方法 二、sleep让当前线程进入休眠 三、终止线程的休眠interrupt() 一、关于线程的sleep方…

    Java 2023年6月9日
    080
  • CORS(跨域资源共享)笔记

    0.前言 CORS(Cross-Origin Resource Sharing)是一个用于处理跨域问题的W3C标准,本文将介绍什么是跨域,引起跨域的同源策略,什么是CORS,COR…

    Java 2023年6月9日
    082
  • 理解Java注解类型

    一. 理解Java注解 注解本质是一个继承了Annotation的特殊接口,其具体实现类是Java运行时生成的动态代理类。而我们通过反射获取注解时,返回的是Java运行时生成的动态…

    Java 2023年5月29日
    050
  • 阿里云一面:并发场景下的底层细节-伪共享问题

    最近看书看到的伪共享问题,直接触碰到知识盲区了,之前确实没听说过这个东西,打开百度就像吃饭一样自然。 虽然面经上出现的次数不多,不过我觉得还是很重要的一个问题,而且不难,花个五分钟…

    Java 2023年6月8日
    061
  • CAS底层原理与ABA问题

    CAS定义 CAS(Compare And Swap)是一种无锁算法。CAS算法是乐观锁的一种实现。CAS有3个操作数,内存值V,旧的预期值A,要修改的新值B。当预期值A和内存值V…

    Java 2023年6月7日
    069
  • 【转】认识长轮询:配置中心是如何实现推送的?

    一 前言 传统的静态配置方式想要修改某个配置时,必须重新启动一次应用,如果是数据库连接串的变更,那可能还容易接受一些,但如果变更的是一些运行时实时感知的配置,如某个功能项的开关,重…

    Java 2023年6月7日
    069
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球