Spring、SpringMVC、Spring Boot、Spring Cloud 概念、关系及区别

2023-10-27

注:此文章转载于其他大神

一、正面解读:

 

  Spring主要是基于IOC反转Beans管理Bean类,主要依存于SSH框架(Struts+Spring+Hibernate)这个MVC框架,所以定位很明确,Struts主要负责表示层的显示,Spring利用它的IOC和AOP来处理控制业务(负责对数据库的操作),Hibernate主要作用是数据的持久化到数据库。
  SpringMVC是基于Spring的一个MVC框架,用以替代初期的SSH框架;(spring Framework本身没有Web功能,Spring MVC使用WebApplicationContext类扩展ApplicationContext,使得拥有web功能)。
  Spring Boot是基于Spring4的条件注册的一套快速开发整合包

 

  三者的发展与联系:
  Spring 最初利用“工厂模式”( DI )和“代理模式”( AOP )解耦应用组件。大家觉得挺好用,于是按照这种模式搞了一个 MVC 框架(一些用 Spring 解耦的组件),用开发 web 应用( SpringMVC )。然后有发现每次开发都要搞很多依赖,写很多样板代码很麻烦,于是搞了一些懒人整合包( starter ),这套就是 Spring Boot 。
 
  升级云-Spring Cloud:现在是大数据、云时代,上云是必然选择,那么Spring Cloud应运而生,

 

二、概念解读

 

  什么是spring
  关于spring的定义无论是从官方还是市面上已经很多能够清晰明了的做出解释了。我姑且简单定义它为一个轻量级的控制反转(IoC)和面向切面(AOP)的容器,Java 开发框架,至于控制反转、面向切面、轻量级、容器等这些自行百度,很多大牛解释的非常清楚

 

  什么是springMVC
  这里我姑且把名词分开来讲、spring与mvc可以更好地解释什么是springMvc,MVC为现代web项目开发的一种很常见的模式,简言之C(控制器)将V(视图、用户客户端)与M(模块,业务)分开构成了MVC ,业内常见的mvc模式的开发框架有Struts1,Struts2等。spring作为专业的开发web项目的开源框架,springMvc为内部的一个模块环节,同样采取mvc设计模式。 所以在使用spring开发web项目时,作为核心环节的MVC可以使用struts1/struts2/springMVc

 

  什么是Spring-boot
  我的理解是这样的、spring系列大家族里面产品超级多了、那么使用spring整合基础框架作为项目架构时,大多数初级人员在搭建项目时话费了很多时间也未必能搭建明白。 spring-boot就是为了解决开发人员这个痛点而诞生的,说白了就是把以前的手动配置的过程自动化封装了,提供默认的配置,借用大牛总结的特点就是:
   简单易用,初学者和大牛都可以轻松上手,其中的注解会给使用者提供方便;
   Spring boot对第三方技术进行了很好的封装和整合,提供了大量第三方接口;
   可以通过依赖自动配置,不需要XML等配置文件
   还提供了安全等特性姑且先不做理会。

 

  完了现在boot总结就是可以快速启动,快速构建项目,在配置文件环节省去大量时间和精力,傻瓜式带你进入项目大门,进行业务逻辑编写。现在跟很多框架整合了 按照规范去配置 分分钟上手写代码

 

  什么是spring-cloud

 

  微服务是当前架构领域的热门话题,要想知道什么是spring-cloud,麻烦先去弄清楚什么是微服务。 spring-colud是一种云端分布式架构解决方案,基于spring boot,在spring boot做较少的配置,便可成为 spring cloud 中的一个微服务。 说点有点冠冕堂皇了 我也没用过、不过简单理解为:spring cloud也就是提供了一些常用的分布式组件,都是应用型的,就根spring mvc差不多。

三、深入解读Spring Cloud与 Spring Boot的概念与关系。
    什么是 Spring Boot

    Spring Booti简化了基于 Spring的应用开发,通过少量的代码就能创建一个独立的、产品级別的 Spring应用。 Spring Boot为 Spring平台及第三方库提供开箱即用的设置,这样你就可以有条不素地开始。多数 SpringBoot应用只需要很少的 Spring配置。
    Spring Boot是由 Pivotal团队提供的全新框架,其设计目的是用来简化新 Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。用我的话来理解,就是Spring Boot其实不是什么新的框架,它默认配置了很多框架的使用方式,就像 maven整合了所有的jar包,Spring Boot整合了所有的框架。
    Spring Boot的核心思想就是约定大于配置,一切自动完成。采用 Spring Boot可以大大的简化你的开发模式,所有你想集成的常用框架,它都有对应的组件支持。
    什么是Spring Cloud
    Spring Cloud是一系列框架的有序集合。它利用 Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线线、负载均衠、断路器、数据监控等,都可以用 Spring Boot的开发风格做到一键启动和部署。 Spring并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组台起来,通过 Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系統开发工具包。
    微服务是可以独立部署、水平扩展、独立访问(或者有独立的数据库)的服务单元, Spring Cloud就是这些微服务的大管家,采用了微服务这种架构之后,项目的数量会非常多, Spring Cloud做为大管家就需要提供各种方案来维护整个生态。
    Spring Cloud就是一套分布式服务治理的框架,既然它是一套服务治理的框架,那么它本身不会提供具体功能性的操作,更专注于服务之间的通讯、熔断、监控等。因此就需要很多的组件来支持一套功能。
    Spring Boot和Spring Cloud的关系
    Spring Boot是 Spring的一套快速配置脚手架,可以基于 Spring Boot快速开发单个微服务, SpringCloud是一个基于 Spring Boot实现的云应用开发工具; Spring Boot专注于快速、方便集成的单个微服务个体,Spring Cloud关注全局的服务治理框架; Spring Boot使用了默认大于配置的理念,很多集成方案已经帮你选择好了,能不配置就不配置, Spring Cloud很大的一部分是基于 Spring Boot来实现,可以不基于 Spring Boot吗?不可以。 Spring Boot可以离开 Spring Cloud独立使用开发项目,但是 Spring Cloud离不开 Spring Boot,属于依赖的关系
  Spring-> Spring Boot> Spring Cloud这样的关系
  Spring Cloud架构
  我们从整体来看一下 Spring Cloud主要的组件,以及它的访间流程
  1、外部或者内部的非 Spring Cloud目都统一通过API网关(Zuul)来访可内部服务.
  2、网关接收到请求后,从注册中心( Eureka)获取可用服务
  3、由 Ribbon进行均负载后,分发到后端的具体实例
  4、徹服务之间通过 Feign进行通信处理业务
  5、 Hystrix负责处理服务超时熔断
  6、 Turbine监控服务间的调用和焠断相关指标
  综上所述,是 Spring Cloud与 Spring Boot的概念及关系,为了更好的学习,请大家务必要熟练掌握相关内容

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring、SpringMVC、Spring Boot、Spring Cloud 概念、关系及区别 的相关文章

  • SpringBoot通过HttpClient方式调用Restful接口

    前言 HttpClient相比于传统jdk自带的URLConnection 增加了易用性和灵活性 它不仅是客户端发送http请求变得容易 而且也方便了开发人员测试接口 提高了开发的效率 HttpClient是Apache Jakarta C
  • Spring、SpringMVC、Spring Boot、Spring Cloud 概念、关系及区别

    注 此文章转载于其他大神 一 正面解读 Spring主要是基于IOC反转Beans管理Bean类 主要依存于SSH框架 Struts Spring Hibernate 这个MVC框架 所以定位很明确 Struts主要负责表示层的显示 Spr
  • Eclipse导入Maven项目pom.xml第一行报错

    导入Maven项目pom xml第一行报错 eclipse导入maven项目后 pom xml文件第一行报错 具体报错信息如下 org apache maven archiver MavenArchiver getManifest org
  • bom 与 dom

    1 什么是bom bom 是 Borwer Object Model 的缩写 中文是浏览器对象模型 作用 用来包含所有的浏览器信息 它有7个对象 window 当新打开一个新的窗口就会产生一个window对象 alert 警告框 var b
  • 熬夜总结的2022java面试题

    java面试宝典 前言 java基础 什么是面向对象 值传递和引用传递 和equals的区别是什么 重载和重写的区别 抽象类和接口的区别 构造器 Constructor 是否可被 override java静态变量 代码块 和静态方法的执行
  • Spring Boot静态资源访问和配置全解析

    一 默认静态资源映射规则 二 自定义静态资源映射规则 2 1 自定义静态资源映射类 2 2 在application properties中进行配置 2 2 1 配置静态资源访问路径 2 2 2 配置静态资源目录 原文 在web开发中 静态
  • IDEA中JDK的配置与Maven的配置详解

    1 在项目结构中配置JDK的版本 1 将Moudle SDK改为1 8 version 1 8 注 这是自己的SDK 而Project SDK是系统自带的SDK 不是自己的SDK 2 选择自己的1 8版本并配置好JDK主路径 2 在设置 构
  • nginx实战

    1 nginx简介 1 1 什么是nginx Nginx 是高性能的 HTTP 和反向代理的web服务器 处理高并发能力是十分强大的 能经受高负 载的考验 有报告表明能支持高达 50 000 个并发连接数 其特点是占有内存少 并发能力强 事
  • 简单粗暴的分布式定时任务解决方案

    分布式定时任务 1 为什么需要定时任务 2 数据库实现分布式定时任务 3 基于redis实现 1 为什么需要定时任务 因为有时候我们需要定时的执行一些操作 比如业务中产生的一些临时文件 临时文件不能立即删除 因为不清楚用户是否操作完毕 不能
  • 如何通过JDBC连接远程服务端的数据库

    如何通过JDBC连接远程服务端的数据库 1 本地navicat链接到远程服务端 2 Myeclipse创建JDBC 1 本地navicat链接到远程服务端 首先 打开远程服务器 远程数据库中新建查询 输入SQL语句 表示允许任何主机访问数据
  • 解决Cannot resolve plugin org.apache.maven.plugins:maven-site-plugin:3.3问题

    在maven项目中遇到这个问题 判断是版本不一致问题 解决 打开设置 Build Execution Deployment Build Tools Maven 如下图 问题的原因出在 在该项目集成的maven和当前项目设置不统一 可能是之前
  • springboot 整合 mybatis 报错: Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException

    Caused by org springframework beans factory NoSuchBeanDefinitionException No qualifying bean of type com mybatis springb
  • spring系列文章(一) 关于IDEA中 add framework support没有web application选项的问题

    今天在回顾smm框架时发现一个问题 也就是在add framework support没有web application选项的问题 问题原因 说明你未完全添加web支持 但是系统认定你有web支持 为什么你没有web application
  • macOS安装Homebrew

    Homebrew官网 http brew sh index zh cn html 方式一 官网安装 Homebrew的安装很简单 mac自带ruby环境 只需在终端下输入如下指令即可完成Homebrew的安装 如果以下链接失效可以去官网看看
  • Java POI 百万规模数据的导入和导出

    目录 1 百万数据导入 1 1 需求分析 1 2 思路分析 1 3 代码实现 1 3 1 步骤分析 1 3 2 自定义处理器 1 3 3 自定义解析 1 3 4 测试 2 百万数据导出 2 1 概述 2 2 解决方案分析 2 3 原理分析
  • JAVA 什么是多态?

    面向对象编程有三大特性 封装 继承 多态 封装隐藏了类的内部实现机制 可以在不影响使用的情况下改变类的内部结构 同时也保护了数据 对外界而已它的内部细节是隐藏的 暴露给外界的只是它的访问方法 继承是为了重用父类代码 两个类若存在IS A的关
  • idea+springboot启动报错 ERROR org.apache.catalina.core.ContainerBase

    用idea导入了一个spring boot的项目 结果启动报错 ERROR org apache catalina core ContainerBase A child container failed during start tomca
  • kubernetes基础入门知识点

    今天正式入门学习kubernetes 也就是大名鼎鼎的k8s k就是开头字母 s是结尾字母 中间有8个字母 所以简称为k8s 这一小节学习总结一下Kubernetes的基础入门概念 比较简单 理解为主 一 Kubernetes是什么 Kub
  • 可能是把Docker的概念讲的最清楚的一篇文章

    编者的话 本文只是对Docker的概念做了较为详细的介绍 并不涉及一些像Docker环境的安装以及Docker的一些常见操作和命令 Docker是世界领先的软件容器平台 所以想要搞懂Docker的概念我们必须先从容器开始说起 如果你想和更多
  • 开源框架若依实战Demo学习笔记

    若依是个不错的框架 下面是我用他写的一个简单demo 以后会在此基础上进行进一步的开发 下面是整合的过程 我在整合的过程中可谓是一波三折 大家如果不想走弯路 那么这篇文章将对你很有帮助 首先 项目代码地址先列出来 方便大家下载使用 这是整理

随机推荐

  • Java将数据写入Excel

    引入Maven依赖
  • Magento订单管理列表扩展字段

    扩展Magento订单管理列表成功 为了方便管理订单 应要求对Mangeto后台的订单管理列表进行扩展 在原有的基础上增加一些字段 比如 产品名称 产品型号 数量等 这是没有扩展之前的Magento 订单管理列表 这是扩展后的图片 上图片中
  • 阿里云ECS部署L2TP/IPSEC,访问服务器内网

    阿里云ECS部署L2TP IPSEC 访问服务器内网 准备工作 自建NAT网关 添加路由 地址转换 部署xl2tpd 安装服务 修改配置 将vpn网段添加到白名单 win10连接vpn 完成 参考链接 准备工作 三台阿里云ECS服务器 操作
  • Linux环境下安装maven

    一 下载maven压缩包 官网地址 http maven apache org download cgi 二 上传到Linux的usr local目录 cd usr local 可以使用rz目录上传 三 解压压缩包 tar zxvf apa
  • 12V转5V稳压电路详细分析(7805三端稳压,LM2596稳压)

    7805线性三端稳压 DCDC的意思是直流变到直流 不同直流电源值的转换 只要符合这个定义都可以叫DCDC转换器 或称之为开关电源或开关调整器 7805属于常用的线性三端稳压器 输入电压范围不大于35V 输入输出压差2V 最大输出电流1 5
  • idea安装scala

    目录 一 前期准备 先在windows下安装好jdk 才可以安装scala 二 Widows下安装SCALA 二 idea下安装scala插件 一 前期准备 先在windows下安装好jdk 才可以安装scala 在安装之前 确保你的电脑上
  • * RESTRICTED VERSION WITH 0800H BYTE CODE SIZE LIMIT; USED: 08B5H BYTE (108%) *

    keil uVsion4的编译的时候出现 RESTRICTED VERSION WITH 0800H BYTE CODE SIZE LIMIT 博主今天在使用keil uVsion4的编译的时候出现 RESTRICTED VERSION W
  • 【8005】如何设置idea汉化中文?

    问题场景 自IntelliJ Idea 2020 1 正式发布了 重要的是开始支持中文 虽然支持 但不是默认中文 你还需要下载插件安装 如果想使用中文汉化 先把版本升升级哦 今天有个同学问我怎么汉化 就写个博客算了 纪念一下 解决方案 总步
  • DOS攻击工具介绍

    DoS Denial Of Service 攻击是指故意的攻击网络协议实现的缺陷或直接通过野蛮手段残忍地耗尽被攻击对象的资源 目的是让目标计算机或网络无法提供正常的服务或资源访问 使目标系统服务系统停止响应甚至崩溃 然而随着网络上免费的可用
  • STM32输出PWM时,PWM1和PWM2的区别

    TIM OCMode PWM2 TIM OCMode PWM1 首先 本人虽然初学STM32但极力反对一种误人子弟的观点 对于STM32这样级别的MCU 有库函数就不用去看寄存器怎么操作的了 好了 言归正传 最近总看到很多朋友对于PWM这个
  • AOP切面的优先级Order属性

    如果有两个切面 那么谁先谁后怎么判断 那如果我们要指定切面的执行顺序呢 可以使用 Order注解指定切面的优先级 值越小优先级越高 举例 两个切面类 Order 2 Aspect Component public class MyAspec
  • jQuery VS AngularJS 你更钟爱哪个?

    在这一次的Web开发教程中 我会尽力解答有关于jQuery和AngularJS的两个非常常见的问题 即jQuery和AngularJS之间的区别是什么 也就是说jQuery VS AngularJS 今天我不会仅仅只是解释两者的差异和列举两
  • 最小二乘法拟合圆心与半径

    公众号 轻松玩转机器人 欢迎关注 1 算法介绍 最小二乘法的目的 通俗来说 就是拟合变量之间的关系 由于现实世界观测的变量存在噪声 找不到完美 不存在误差的关系 因此我们退而求其次 尽可能减小误差影响 误差有正有负 而我们希望消除正负方向的
  • FPGA实现数码管数字累加

    一 基本原理 FPGA数码管简单显示 简单数码管原理上文介绍过 本文主要介绍视觉在1ms内感知不到数码管数字来回切换的变动 1ms内数字跳变 眼睛感知是数字一直在显示 二 代码原理 1 显示模块 1 根据需要显示的数字 取出个 十 百 千位
  • 针对TextView更换字体颜色同时设置不同的点击事件的设计方案

    在需求中我们需要将下面的文字放到一起 并更改不同的颜色进行区分 还需要将用 用户协议 和 隐私政策 添加不同的点击事情 去跳转进行展示不同的说明 首先这是一个弹框 我们需要先去定义它的布局文件
  • 【科普贴】USB_ID介绍

    一 功能介绍 1 当前很多SOC 都支持OTG功能 所以mini micro USB的接口上通常会拓展一个USB ID引脚 如下图 2 USB ID pin 为低电平时 则设备为host模式 比如PC和支持OTG设备做主设备时 USB ID
  • platformio添加外部库文件方法

    方法1 在这里搜索所需要的库函数进行添加到工程里 方法2 常用 1 准备好所需要的库文件 2 打开工程文件夹 完成以上4步后 重启VScode 即可完成库文件添加 方法3 常用 当创建完工程后 在该工程中添加库 方法2是添加全局库的方法 添
  • QT中qrect的使用介绍,超级详细

    QT中qrect的使用 QT是跨平台的GUI应用程序开发框架 使用C 编写 其中 qrect是QT中一个常用的类 用于描述矩形 qrect的函数原型参数介绍 在使用qrect时 我们需要了解以下几个函数原型参数 QRect 构造函数 创建一
  • 基于Python和mysql开发的BBS问答社区管理系统(源码+数据库+程序配置说明书+程序使用说明书)

    一 项目简介 本项目是一套基于Python和mysql开发的BBS问答社区管理系统 主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Python学习者 包含 项目源码 项目文档 数据库脚本等 该项目附带全部源码可作为毕设使用 项
  • Spring、SpringMVC、Spring Boot、Spring Cloud 概念、关系及区别

    注 此文章转载于其他大神 一 正面解读 Spring主要是基于IOC反转Beans管理Bean类 主要依存于SSH框架 Struts Spring Hibernate 这个MVC框架 所以定位很明确 Struts主要负责表示层的显示 Spr