首页 > 其他分享 >Spring,SpringMVC,SpringBoot,SpringCloud有什么区别?

Spring,SpringMVC,SpringBoot,SpringCloud有什么区别?

时间:2023-09-09 15:01:27浏览次数:41  
标签:服务 SpringBoot 框架 SpringMVC Spring Boot MVC 开发

讲一讲 Spring、SpringMVC、SpringBoot、SpringCloud 之间的关系?

  • Spring是核心,提供了基础功能;
  • Spring MVC 是基于Spring的一个 MVC 框架 ;
  • Spring Boot 是为简化Spring配置的快速开发整合包;
  • Spring Cloud是构建在Spring Boot之上的服务治理框架。

Spring

一般说 Spring 框架指的都是 Spring Framework,它是很多模块的集合,采用容器化管理,创建各种 Bean 实例,并维护着 bean 与bean之间的关系。

两大核心利器:

  • IOC(控制反转)
  • AOP(面向切面)

为Java应用程序开发提供了全面的基础架构支持。包含很多开箱即用的模块,如:SpringJDBC、SpringSecurity、SpringAOP、SpringORM,提高了应用开发的效率。

Spring MVC

一个网站通常有前台页面和后台处理逻辑,为了打通这层关系,衍生出类似 struts2 框架。专门解决前台页面与后端数据处理之间的映射关系。

当然,Spring 家族为了维护其生态地位,把这种 MVC 模式的优势吸收了进来,加以改造,于是就诞生了 Spring MVC

Spring MVC是 Spring 的 web 框架。

通过Dispatcher ServletModelAndViewView Resolver,开发web应用变得很容易。主要针对的是带页面的系统开发,URL路由、Session、模板引擎、静态Web资源等等。

图片

Spring MVC 框架与其他 Web MVC 框架一样,是请求驱动的,围绕一个中央 Servlet 设计,该 Servlet 将请求分派给控制器并提供其他功能以促进 Web 应用程序的开发。然而,Spring 的 DispatcherServlet 不仅仅如此。它与 Spring IoC 容器完全集成,因此允许您使用 Spring 的其他功能。

Spring Boot

Spring 配置复杂,xml文件有大量的bean定义,开发起来繁琐。

另外,分布式时代,微服务盛行,为了统一后端框架,便于运维维护,开始推行 Spring Boot。

Spring Boot 是Spring框架的扩展,提供更加 丰富的注解

同时,将Servlet容器集成到框架中,如:TomcatJettyUndertow,我们开发时不需要再手动在 IDEA 中配置 tomcat 的路径,只需要main函数启动。

Spring Boot 框架相对于 Spring MVC 框架来说,更专注于后端接口,不开发前端页面,推崇前后分离

根据 约定胜于配置 原则,与市场主流的开源框架打通, 设计了 StarterAutoConfiguration 机制,简化配置流程,通过简单的jar包引入,快速具备组件集成能力。大大提高了程序员的开发效率。

Spring Cloud

分布式时代,系统间需要打通、组成集群,从而具备更大吞吐能力。我们会将一个单体项目拆分成多个微服务,每个微服务系统独立技术选型、开发、部署上线,各个微服务之间打通、相互协调,从而完成全流程服务。

当然,为了降低不同微服务系统间的差异化接入成本,通常都是统一基于 Spring Boot 构建微服务系统。

Spring Cloud 将多个 Spring Boot 单体微服务整合、管理,是一系列框架的有序集合,利用Spring Boot的开发便利性简化了分布式系统基础设施的开发。

Spring Cloud 关注 微服务整合、管理的服务治理框架,具有生态定位,提供丰富的组件框架,如:

  • 服务注册、发现
  • 服务间调用
  • 负载均衡
  • 网关
  • 配置中心
  • 断路器
  • 消息总线
  • 监控 等

标签:服务,SpringBoot,框架,SpringMVC,Spring,Boot,MVC,开发
From: https://blog.51cto.com/coderge/7419618

相关文章

  • SpringBoot框架实现一个简单的管理系统
    当然,我可以提供一个简单的示例代码,用SpringBoot框架实现一个简单的管理系统。以下是一个用户管理系统的示例代码:创建SpringBoot项目:使用SpringInitializr(https://start.spring.io/)创建一个新的SpringBoot项目,选择相应的依赖(如SpringWeb、SpringDataJPA、Thymeleaf等)。创建......
  • springboot 框架国际化 + thymeleaf
    项目目录结构注意:导入thymeleaf,web的pom依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId></dependency><dependency> <groupId>org.springframework.boot&l......
  • SpringCloud - Feign
    目录Feign入门Feign入门先看RestTemplate发起远程调用的代码:Stringurl="http://userservice/user/"+order.getUserId();Useruser=restTemplate.getForObject(url,User.class);存在以下问题:代码可读性差,编程体验不统一参数复杂URL难以维护......
  • 一、SpringCloud Alibaba之普通应用
    1.1、创建一个maven项目新建项目操作路径:File->new->project输入相关的配置:Name:项目名称Location:项目所在位置ArtifactCoordinates:项目坐标(制品坐标)更改配置文件在项目中指定了打包方式为pom方式,此时项目目录下就不需要src目录,只保留一个pom.xml文件就行。创......
  • 浅聊一下SpringMVC的核心组件以及通过源码了解其执行流程
    浅聊一下SpringMVC的核心组件以及通过源码了解其执行流程MVC作为WEB项目开发的核心环节,正如三个单词的分解那样,Controller(控制器)将View(视图、用户客户端)与Model(javaBean:封装数据)分开构成了MVC,今天我们浅聊一下SpringMVC的相关组件以及通过源码了解器执行流程SpringMVC的核心组......
  • springboot打fat包怎么把第三方jar打入boot/lib中
    在maven工程的POM文件修改如下,在build部分: <resources><resource><directory>src/main/resources</directory></resource><resource><directory>../yhya-credibledata-collect-service/lib</directory>......
  • springMVC的xml文件配置
    <?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:p="http://www.springframework.org/sc......
  • IntelliJ IDEA新建SpringBoot项目
    IntelliJIDEA新建SpringBoot项目前言虽然新建项目比较简单,但还是有几个点需要注意。步骤下载和安装IDEA不再介绍新建工程点击“NewProject”标红的为重点关注需要关注的几个字段:Name:项目/模块名Artifact:相当于具体的功能名Group:可以理解为分组,例如......
  • springboot简单使用poi-tl
    简介poi-tl是一个基于ApachePOI的开源Word模板引擎,比Freemarker的功能更加强大。官方文档地址:http://deepoove.com/poi-tl/导包导入包时,依赖说明参考官方文档,导入包不适配可能会造成一些问题,此处可以使用<dependency><groupId>org.apache.poi</grou......
  • 报错解决 :Resolved [org.springframework.web.bind.MissingServletRequestParameterE
    报错解决:Resolved[org.springframework.web.bind.MissingServletRequestParameterException解决方法:RequestParam注解加上required=false属性。这样请求参数可以传null对象。如果没有加上required=false属性,这样请求参数传""空字符串也不会报错。如果没有加上required=......