转摘:Spring、SpringMVC和Springboot的区别

一、概念

1、Spring

Spring是一个开源容器框架,可以接管web层,业务层,dao层,持久层的组件,并且可以配置各种bean,和维护bean与bean之间的关系。其核心就是控制反转(IOC),和面向切面(AOP),简单的说就是一个分层的轻量级开源框架。

2、SpringMVC

Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。SpringMVC是一种web层mvc框架,用于替代servlet(处理|响应请求,获取表单参数,表单校验等。SpringMVC是一个MVC的开源框架,SpringMVC=struts2+spring,springMVC就相当于是Struts2加上Spring的整合。

3、SpringBoot

Springboot是一个微服务框架,延续了spring框架的核心思想IOC和AOP,简化了应用的开发和部署。Spring Boot是为了简化Spring应用的创建、运行、调试、部署等而出现的,使用它可以做到专注于Spring应用的开发,而无需过多关注XML的配置。提供了一堆依赖打包,并已经按照使用习惯解决了依赖问题—>习惯大于约定。

二、原理和结构

1、Spring的原理和组成

Spring为简化我们的开发工作,封装了一系列的开箱即用的组件功能模块,包括:Spring JDBC 、Spring MVC 、Spring Security、 Spring AOP 、Spring ORM 、Spring Test等。如下图:

转摘:Spring、SpringMVC和Springboot的区别

简化的理解图:

转摘:Spring、SpringMVC和Springboot的区别

2、SpringMVC的原理和组成

从上图中可以看出:SpringMVC是属于SpringWeb里面的一个功能模块(SpringWebMVC)。专门用来开发SpringWeb项目的一种MVC模式的技术框架实现。其原理如下:

转摘:Spring、SpringMVC和Springboot的区别

MVC:Model(模型)、VIew(视图)、Controller(控制器);我们从开始接触并学习javaWeb开发就知道MVC这一种架构,如早起的Sturts1、Sturts2等。

3、SpringBoot的原理和特性

Spring Boot基本上是 Spring框架的扩展,它消除了设置 Spring应用程序所需的 XML配置,为更快,更高效的开发生态系统铺平了道路。

Spring Boot中的一些特点:

  1. 创建独立的 spring应用。
  2. 嵌入 Tomcat, Jetty Undertow 而且不需要部署他们。
  3. 提供的”starters” poms来简化 Maven配置
  4. 尽可能自动配置 spring应用。
  5. 提供生产指标,健壮检查和外部化配置
  6. 绝对没有代码生成和 XML配置要求。

组成和结构如下图:

转摘:Spring、SpringMVC和Springboot的区别

从图中可以看出SpringBoot是包含了Spring的核心(IOC)和(AOP);以及封装了一些扩展,如Stater:

转摘:Spring、SpringMVC和Springboot的区别

三、区别与总结

1.简单理解为:Spring包含了SpringMVC,而SpringBoot又包含了Spring或者说是在Spring的基础上做得一个扩展。

转摘:Spring、SpringMVC和Springboot的区别

2、关系大概就是这样

spring mvc < spring < springboot

3&#x3001;Spring Boot 对比 Spring 的一些优点包括

  • 提供嵌入式容器支持
  • 使用命令 _java -jar_独立运行jar
  • 在外部容器中部署时,可以选择排除依赖关系以避免潜在的jar冲突
  • 部署时灵活指定配置文件的选项
  • 用于集成测试的随机端口生成

4、结论

Spring Boot只是 Spring本身的扩展,使开发,测试和部署更加方便。

Original: https://www.cnblogs.com/rogge7/p/14046300.html
Author: 蓝蓝的
Title: 转摘:Spring、SpringMVC和Springboot的区别

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

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

(0)

大家都在看

  • Java中使用java.awt.geom.Point2D进行坐标相关的计算(距离、平方等)

    在Java中需要对坐标点进行一些计算和判断。 比如计算两点之间的距离、距离的平方、两点是否相等、坐标赋值、克隆等。 可以使用Java自带的java.awt.Point2D的相关AP…

    Java 2023年5月29日
    075
  • java中的枚举

    java;gutter:true; class Weather { public static void main(String[] args) { //打印自定义枚举常量 Sys…

    Java 2023年6月6日
    098
  • Java你可能不知道的事(3)HashMap

    概述 HashMap对于做Java的小伙伴来说太熟悉了。估计你们每天都在使用它。它为什么叫做HashMap?它的内部是怎么实现的呢?为什么我们使用的时候很多情况都是用String作…

    Java 2023年6月13日
    083
  • 路由器配置深入浅出—路由器接口PPP协议封装及PAP和CHAP验证配置

    知识域: 是针对点对点专线连接的接口的二层封装协议配置 PPP的PAP和CHAP验证,cpt支持,不一定要在gns3上做实验。 路由器出厂默认是hdlc封装,修改为ppp封装后,可…

    Java 2023年6月6日
    094
  • java 百度人脸识别接口调用配置

    package org.fh.util; <span class="hljs-keyword">import org.json.JSONObject…

    Java 2023年6月7日
    060
  • SpringCloud学习笔记-Eureka基础

    Spring Cloud Eureka是Spring Cloud Netflix微服务套件中的一部分,它基于Netflix Eureka做了二次封装,主要负责完成微服务架构中的微服…

    Java 2023年5月30日
    094
  • 如何在servlet取得spring beans (autowired)(转)

    在应用中一般普通的JavaPojo都是由Spring来管理的,所以使用autowire注解来进行注入不会产生问题,但是有两个东西是例外的,一个是 Filter,一个是Servlet…

    Java 2023年5月30日
    073
  • Spring(一)-初识 + DI+scope

    1、获取bean实例的三种方式 UTF-8 4.3.18.RELEASE 1.16.18 4.11 org.springframework spring-beans ${sprin…

    Java 2023年6月15日
    092
  • Java多线程

    进程是程序的依次执行过程,线程是比进程更小的执行单位,一个进程在其执行的过程中可以产生多个线程,多个线程共享进程的堆和方法区内存资源。 1.进程和线程 程序是含有指令和数据的文件,…

    Java 2023年6月9日
    075
  • Java随谈(六)我们真的理解 Java 里的整型吗?

    整型是我们日常生活中最常用到的基础数据类型,看这篇文章之前,我想问: 我们真的像自己认为的那么理解 Java 内的整型吗? 也许看完本篇文章你就有自己的答案。 C 语言 提供了如下…

    Java 2023年6月8日
    081
  • 力扣算法题1.两数之和(Java)

    力扣算法题1.两数之和(Java) 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标…

    Java 2023年6月7日
    0118
  • 诶,我的动态数据源怎么失效了

    背景 模拟现场 原因 入口 找不同 什么时候放入到 conHolder的 结论 背景 项目中是有用到多数据源的,是用AbstractRoutingDataSource这个类来实现数…

    Java 2023年6月8日
    086
  • 千万级别的表分页查询非常慢,怎么办?

    一、问题复现 在实际的软件系统开发过程中,随着使用的用户群体越来越多,表数据也会随着时间的推移,单表的数据量会越来越大。 以订单表为例,假如每天的订单量在 4 万左右,那么一个月的…

    Java 2023年6月9日
    064
  • 万字剖析OpenFeign整合Ribbon实现负载均衡的原理

    大家好,前面我已经剖析了OpenFeign的动态代理生成原理和Ribbon的运行原理,这篇文章来继续剖析SpringCloud组件原理,来看一看OpenFeign是如何基于Ribb…

    Java 2023年6月16日
    094
  • Maven下载安装与配置

    一、Maven下载 官网下载地址:Maven – Download Apache Maven 此处本人选择3.8.8版本。 点击”apache-maven-3.8.8-…

    Java 2023年6月8日
    096
  • dpdk在虚拟机上出错处理

    本文介绍的步骤基本适用于dpdk 1.7.0 – dpdk 2.0.0 各版本。只是setup.sh显示的菜单有一些小的不同;同样的,也适用于ubuntu更高版本(已在…

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