一文彻底搞懂Spring, Spring MVC, Spring Boot 和 Spring Cloud 区别

news2024/9/20 1:04:33

1.定义说明

Spring, Spring MVC, Spring Boot 和 Spring Cloud 是Spring家族中的四个不同的项目,它们有各自的功能,并且可以在Spring应用程序中一起使用。

1)Spring

Spring是一个开源容器框架,它集成各类型的工具,通过核心的Bean factory实现了底层的类的实例化和生命周期的管理。它提供了一系列基础功能和依赖注入(DI)机制,最核心的功能就是控制反转(IOC)和面向切面编程(AOP)。Spring分为 Spring Core、 Spring AOP、 Spring ORM、 Spring DAO、Spring Context、 Spring Web 和 Spring Web MVC七个部分。

2)Spring MVC

Spring MVC是一个模型视图控制器(MVC)框架,用于创建web应用程序,属于Spring框架的一部分。当我们声明Controller方法时,SpringMVC将Controller方法与uri请求资源映射绑定,当客户端发送http请求,服务器控制器(由DispatcherServlet实现),率先处理请求,并将请求转发到绑定uri的controller方法,方法处理完毕返回响应报文。

3)Spring Boot

Spring Boot是一个用于简化Spring应用程序初始搭建以及开发过程的工具,在2014年4月发布。它提供了一种快速开始应用的方式,倡导约定大于配置,将很多集成配置的工作,内置成默认配置,去繁从简,帮助开发者快速开发和运行Spring应用。

比如应用集成了spring-boot-web-starter,该应用就拥有了web的能力,应用集成了spring-boot-starter-data-redis,该应用就具备快速集成redis服务的能力。

4)Spring Cloud

Spring Cloud是一系列框架的有序集合,基于 Spring Boot 框架,它将市面上较好的微服务框架集成进来,如服务注册发现、配置中心、消息总线、负载均衡、服务限流熔断、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。它是一套工具服务,提供了快速构建分布式系统的服务工具,在2015 年 3 月发布。

比如应用集成spring-cloud-config-server,该应用就成了配置中心服务端,应用集成spring-cloud-config-client,那应用就成了配置中心客户端。

2.总结说明

一句话总结:

1)Spring 是整套开源框架运转的核心;

2)SpringMVC是专门实现Web开发的视图控制器框架;

3)SpringBoot 使应用快速集成某个服务,或拥有某个工具类型的功能;

4)SpringCloud 使应用快速变成某个服务,或拥有某个工具类型的功能;

3.举例说明

1)Spring MVC举例

以下是一个简单的Spring MVC应用程序的例子:

@Controller
public class HelloWorldController {

    @RequestMapping("/hello")
    @ResponseBody
    public String hello() {
        return "Hello, World!";
    }
}

在这个例子中,我们创建了一个简单的Spring MVC控制器,它处理"/hello"的请求并返回"Hello, World!"。

2)Spring Boot举例

Spring Boot和Spring Cloud可以用于快速搭建和部署Spring应用程序,例如:

@SpringBootApplication
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

在这个Spring Boot应用程序中,我们使用@SpringBootApplication注解来启动Spring应用程序,并通过SpringApplication.run()方法运行它。

3)Spring Cloud举例

Spring Cloud可以用于服务发现和配置管理,例如使用Spring Cloud Netflix的Eureka:

@EnableEurekaClient
@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

在这个例子中,我们使用@EnableEurekaClient注解来标记应用程序作为Eureka客户端,Eureka是一种服务发现机制,可以帮助我们快速地在分布式系统中找到服务。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2098697.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Android ROM和Linux内核源码在线阅读网站

1, Android在线代码阅读 http://www.aospxref.com/ 支持最新android源码 http://androidxref.com/ 支持到Android9 2, Linux内核在线阅读网站 https://lxr.missinglinkelectronics.com/ 支持在线阅读linux内核,uboot,qemu &am…

JavaScript方法链

前言 在JavaScript中,方法链(Chaining Methods)是一种编程技术,允许你在一个表达式中连续调用多个方法。这通常通过让每个方法返回对象自身(this)来实现,从而可以在同一行上依次调用多个方法。…

文件加密软件怎么选呢?五款人气超高的文件加密软件推荐给你

文件加密软件怎么选呢?以下是五款人气超高的文件加密软件,包括安企神在内,它们各自具有独特的功能和优势: 安企神 功能特点:安企神是一款功能强大的企业级文件加密软件,提供全方位的数据安全保护。它采用先…

TPAMI 2024|如何在动态世界中捕捉每一个细节?智能视觉识别的突破,开放长尾识别技术详解!

题目:Open Long-Tailed Recognition in a Dynamic World 动态世界中的开放长尾识别 作者:Ziwei Liu; Zhongqi Miao; Xiaohang Zhan; Jiayun Wang; Boqing Gong; Stella X. Yu 源码链接: https://liuziwei7.github.io/projects/LongTail.ht…

Java项目: 基于SpringBoot+mysql网上订餐系统分前后台(含源码+数据库+开题报告+PPT+毕业论文)

一、项目简介 本项目是一套基于SpringBootmysql网上订餐系统分前后台 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试,eclipse或者idea 确保可以运行! 该系统功能完善、界面美观、操作简单…

Ollydbg提示:xxxxxx可能不是一个 32 位 PE 文件,无论如何都尝试载入吗?

原标题:OD提示C:\Users\XuanRan\Desktop\xxxx.exe’可能不是一个个 32 位 PE 文件,无论如何都尝试载入吗? 它的意思就是告诉你,OD现在只能用于32位软件。 如果要调试64位程序,去使用x64dbg x64dbg下载链接: https://github.com…

代码随想录算法训练营第32天|509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯

目录 509. 斐波那契数1、题目描述2、思路3、code4、复杂度分析 70. 爬楼梯1、题目描述2、思路3、code 746. 使用最小花费爬楼梯1、题目描述2、思路3、code4、复杂度分析 509. 斐波那契数 题目链接:link 1、题目描述 斐波那契数 (通常用 F(n) 表示&…

503错误

503 Service Temporarily Unavailable 我在学习ES-IK分词器时restart es后发现刷新网页报了503错误 后面发现是由于浏览器缓存或存储的Cookies引起的,需要清除缓存和Cookies 然后在游览器设置中找到 ​​ 然后刷新发现可以了

从初阶到顶尖:腾讯产品经理五级能力模型深度解读

产品经理在互联网企业中扮演着至关重要的角色,他们负责从需求分析到产品落地的整个生命周期。在腾讯的产品经理能力模型中,能力被分为五个等级(Level 1 到 Level 5),每个等级代表了产品经理在通用能力、专业知识、专业…

【Python报错已解决】“ModuleNotFoundError: No module named ‘mne‘”

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 文章目录 引言:一、问题描述1.1 报错示例:当我们尝试导入MNE-Python库时,可能会看到以下错误…

基础动销方案:开启稳健起步之路

在当今竞争激烈的商业世界中,如何让产品或服务实现有效动销,是企业生存与发展的关键所在。而基础动销方案,正是企业迈出稳健第一步的重要策略。 基础动销到底有多重要呢?它能在产品或服务推出初期,通过一系列营销手段达…

2025毕业季:如何用Java SpringBoot构建医疗就诊平台?掌握最新技术,开启医疗信息化大门

✍✍计算机毕业编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java、…

Windows 下载安装RabbitMQ

环境描述 windows10 Erlang 26.2.x 版本 RabbitMQ 3.13.7 因为RabbitMQ是Erlang语言开发的,所以必须安装 Erlang RabbitMQ官网链接: https://www.rabbitmq.com/docs/which-erlang 1.下载并安装Erlang 26.2.5 1.1下载Erlang 26.2.5 https://erlang.org/dow…

2.【R语言】RStudio的下载和安装

2.1 RStudio的介绍 RStudio 是一种集成开发环境 (Integrated Development Environment, IDE),主要用于 R 语言的开发和数据分析。它为 R 语言的使用者提供了一系列便捷的工具和功能,使得编写、调试和执行 R 代码变得更加高效和直观。以下是对 RStudio 主…

面向电商与营销的AI一键试衣:打造个性化购物体验

随着人工智能技术的迅猛发展,虚拟试衣功能正在逐渐改变消费者的在线购物体验。本文将介绍一项名为“Kolors”的项目,它利用先进的AI技术,为电商平台和营销活动提供了一键试衣功能。通过精确调整和优化服装在生成图像中的外观,Kolors使得虚拟试衣体验更加自然和逼真。 一、项…

nginx 部署前端vue项目

文章目录 一、什么是nginx?二、nginx 部署前端vue项目步骤2.1 安装nginx2.1.1 windows环境安装2.1.2 linux环境安装 2.2 打包vue项目 2.3 配置nginx 一、什么是nginx? Nginx是一款轻量级的HTTP服务器,采用事件驱动的异步非阻塞处理方式框架&…

JDK7前时间相关类(Data,SimpleDataFormat,Calender)

Data时间类 世界标准时间:格林尼治时间(GMT) 目前世界标准时间(UTC)已经替换为:原子钟 中国标准时间:世界标准时间8小时 总结: 1.如何创建日期对象? Data data new…

FreeRTOS线程数据传递---消息队列

简介 队列操作 创建队列 队列写入 队列写入 队列读取 队列相关函数 1.创建队列 2.向队列写入 3.从队列读取 队列的其他写入API函数 简介 在实际的项目开发中,经常会遇到在任务于任务之间或任务于中断之间需要进行“沟通交 流”,这…

2D 凸包-2D Convex Hulls

2D 凸包-2D Convex Hulls 本章描述了CGAL中用于生成二维凸包的函数,以及用于检查点集是否为强凸的函数。还有许多用于计算特殊极值点和包点子序列的函数,如一组点的下包和上包。 CGAL提供了几种经典算法的实现,用于计算二维点集的逆时针极值…

嵌入式软件--51单片机 DAY 1

一、单片机 1.单片机概念 51单片机(或称8051单片机)原是指1980年由Intel公司推出的一种8位微控制器系列,现在更多的指实现了8051指令集(单片机的“语言”)的一系列单片机。8位指的是寄存器的位数和数据总线的位数&…