SpringBoot 介绍

news2025/6/20 4:07:00

1.简介

SpringBoot最开始基于Spring4.0设计,是由Pivotal公司提供的框架。

SpringBoot发展史:

  • 2003年Rod Johnson成立Interface公司,产品是SpringFramework
  • 2004年,Spring框架开源,公司改名为Spring Source
  • 2008年,收购Apache Servlet、Tomcat,为SpringBoot内嵌Web容器奠定基础,整个生态自己掌握
  • 2009年,公司被VMWare以4.6亿美金收购
  • 被收购后,Spring公司接连收购了很多优秀的开源中间件,比如RabbitMQ、Redis
  • 2013年,VMWare、EMC、通用电气三者联合成立Pivotal公司,从这开始,Spring开始一路暴走
  • 2014年,推出SpringBoot1.0,基于Spring4.0开发
  • 2015年,推出SpringCloud
  • 2018年,Pivotal公司上市
  • 2018年3月,SpringBoot2.0发布,基于Spring5.0开发

SpringBoot、SpringCloud都是开源的,那么Pivotal靠什么盈利?

微服务是比较新的技术,传统企业要将业务开发微服务模式,肯定会有许多困难,而Pivotal就是靠提供技术服务支持盈利,全球500强公司有2/3的公司都与Pivotal有合作关系。

SpringBoot继承了Spring框架原有的优秀特性,比如IOC、AOP等,他并不是用来代替Spring的解决方案,而是和Spring框架紧密结合,进一步简化了Spring应用的整个搭建和开发过程。其设计目的是用来简化Spring应用的初始搭建以及开发过程。怎么简化的呢?就是通过提供默认配置方式让我们更容易使用。

再来详细解释一下,如果我们基于SSM框架进行过开发,我们可以理解,Spring在集成SpringMVC、Mybatis时,需要做大量的xml文件配置,在集成其他框架或中间件时,也是同样的道理。而再对比一下SpringBoot开发,我们可以发现,我们只需要引入不同的Starters的maven依赖,就可以开箱即用的进行开发。这就是SpringBoot为我们做的:提供默认的配置方式让我们更容易使用。

下面画图来帮助理解: 这是Spring的模块结构

这是我对SpringBoot的理解

关于SpringBoot有一句很出名的话就是约定大于配置。采用SpringBoot可以大大简化开发模式,他集成了大量常用的第三方库配置,所有你想集成的常用框架,他都有对应的组件支持,例如Redis、MongoDB、Dubbo、Kafka、ES等等。

SpringBoot应用中这些第三方类库几乎可以零配置地开箱即用,大部分的SpringBoot应用都只需要非常少量的配置代码,开发者能够更加专注于业务逻辑。另外SpringBoot通过集成大量的框架使得依赖包的版本冲突,以及引用的不稳定性等问题得到了很好的解决。

解释:

  • 约定大于配置:使用SSM开发模式,Spring如果要集成Redis,就要在xml文件中配置bean,并为bean配置properties。
  • 依赖包版本冲突:我们可以直接引入一个指定版本的spring-boot-starter-web的依赖,就可以导入不会冲突的web开发相关的jar包

总结

  1. 简化Spring应用开发的一个框架;
  2. 对整个企业级开发技术栈的一个大整合build anything;
  3. J2EE开发的一站式解决方案;

优点

  • 快速构建一个独立的 Spring 应用程序 ;
  • 嵌入的 Tomcat 、 Jetty 或者 Undertow,无须部署 WAR 文件;
  • 提供starter POMs来简化Maven配置和减少版本冲突所带来的问题;
  • 对Spring和第三方库提供默认配置,也可修改默认值,简化框架配置;
  • 提供生产就绪型功能,如指标、健康检查和外部配置;
  • 无需配置XML,无代码生成,开箱即用;

2.Why SpringBoot

在开始这个阶段的描述前,首先问自己一个问题,假如我原来使用的是SSM的开发模式,虽然SpringBoot确实简化了Spring开发的配置,但我真的会因为这个简化就去使用SpringBoot吗?

我的答案是不会。首先,我已经熟悉了SSM方式开发,更换成SpringBoot开发模式的成本太大。其实,有很多贡献者提供了方便的SSM脚手架,可以开箱即用。而且SSM开发是单体应用,我只需要做一次集成就够了。

所以上面提到的SpringBoot简化了Spring的开发,这只是最直观的一方面,但并能够让SpringBoot变得如此流行,而真正让他变得流行的是微服务开发模式,这也是谈SpringBoot必谈微服务的原因。可以说是Spring Cloud带动了SpringBoot ,SpringBoot成就了SpringCloud

下面这张图描述了Spring、SpringBoot、SpringCloud之间的关系。

从谷歌关键词搜索中,我们也可以看到SpringBoot和微服务的火热程度是同步的。

微服务

说到微服务,不得不提到应用的架构演变过程。下面以电商为例做一个简要说明。

在传统应用开发中,我们所有的模块都在一个应用中开发与维护,也就是ALL-IN-ONE开发模式。如果是一个电商应用,那么这个应用中会包含用户模块、支付模块、订单模块、商品模块等等。如果用户提升,应用访问量上升,那么会使用负载均衡的架构,如下图:

但随着应用体积增加,访问量增多,单体应用难以维护、单个模块瓶颈等问题暴露了出来。比如随着开发人员增多,几百个人同时维护一个项目,代码的合并、项目的上线就是很大的问题。还有假如在某些活动时期,比如双11,订单模块流量是最多的,而商品、用户模块访问量可能与平时差不太多,那么如果去部署更多的单体应用服务器,会耗费更多的硬件资源,增加成本。因此也就催生出来微服务架构。

下图是微服务架构,从左到右。流量从左边进入,经过一个个节点,可能是订单模块的节点,可能是用户模块的节点,他们之间使用远程调用方式通信。直到最右边两排,最右边是mysql等持久层存储,挡在他前面的是缓存层,比如Redis。

继续说回SpringBoot。随着流量上升,微服务架构势在必行,或者说水平扩展应用势在必行,那么我如果继续以原来的SSM开发模式开发,原来只需要进行一次的Spring集成其他框架我需要集成很多次,那么就远不如SpringBoot更加快速方便,所以说Spring Cloud带动了SpringBoot ,SpringBoot成就了SpringCloud

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

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

相关文章

[MAUI 项目实战] 手势控制音乐播放器(三): 动画

文章目录吸附动画确定位置平移动画回弹动画使用自定义缓动函数多重动画点击动画项目地址上一章节我们创建了手势容器控件PanContainer,它对拖拽物进行包装并响应了平移手势和点击手势。拖拽物现在虽然可以响应手势操作,但视觉效果较生硬,一个…

【ros2】ubuntu18.04同时安装ros1和ros2

序言 ubuntu18.04(已安装ros melodic)中安装ros2 dashing版本,以支持ros2工程的编译使用 1. 安装ros melodic 参考我之前的文章:docker容器中安装melodic-ros-core过程总结 2. 安装ros2 dashing (1)设置…

《花雕学AI》12:从ChatGPT的出现看人类与人工智能的互补关系与未来发展

马云说道,ChatGPT这一类技术已经对教育带来挑战,但是ChatGPT这一类技术只是AI时代的开始。 谷歌CEO桑德尔皮猜曾说:“人工智能是我们人类正在从事的最为深刻的研究方向之一,甚至要比火与电还更加深刻。” 360周鸿祎认为&#xf…

用WPF设计一个简易的休息提醒闹钟

目录一.视频演示地址二.代码展示三.源代码:最近利用工作之余,写了一个WPF程序玩玩,用来提醒自己在长时间学习后要休息一会儿哈哈,功能很简单,没啥难点一.视频演示地址 可以设定间隔提醒时长和休息时长,点击…

【C++】STL之stack、queue的使用和模拟实现+优先级队列(附仿函数)+容器适配器详解

之前的一段时间,我们共同学习了STL中一些容器,如string、vector和list等等。本章我们将步入新阶段的学习——容器适配器。本章将详解stack、queue的使用和模拟实现优先级队列(附仿函数)容器适配器等。 目录 (一&…

WMI系列--关于WMI

本系列预计有三节,分别记录关于WMI的一些基础知识,WMI的永久订阅事件,WMI常见的攻防对抗手段 WMI简介 WMI 的全称是 Windows Management Instrumentation,即 Windows 管理规范,在 Windows 操作系统中,随着 WMI 技术的引入并在之…

Document Imaging SDK 11.6 for .NET Crack

Document Imaging SDK for .NET View, Convert, Annotate, Process,Edit, Scan, OCR, Print 基本上被认为是一种导出 PDF 解决方案,能够为用户和开发人员提供完整且创新的 PDF 文档处理属性。它具有提供简单集成的能力,可用于增强用户 .NET 的文档成像程…

c语言—指针进阶

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; 给大家跳段街舞感谢支持&#xff01;ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ…

HC小区管理系统-海康摄像头监控配置

HC小区管理系统-海康摄像头监控配置 【HC小区管理系统-海康摄像头监控配置】 HC小区管理系统-海康摄像头监控配置_哔哩哔哩_bilibili 监控配置说明&#xff1a; 一、安装HC物业系统 HC小区管理系统安装本地代码发布 二、安装物联网系统 三、安装srs 流媒体服务器 四、启动s…

MobTech MobLink|裂变拓新,助力运营

一、打破移动应用孤岛 在移动互联网时代&#xff0c;应用的数量和质量都在不断上升&#xff0c;用户的需求和体验也越来越高。然而&#xff0c;应用之间的跳转和互通却存在很多障碍和不便&#xff0c;导致用户的流失和挫败感。例如&#xff1a; 用户在浏览器或社交平台上看到一…

看完这个你就牛了,自动化测试框架设计

一、引言 随着IT技术的快速发展&#xff0c;软件开发变得越来越快速和复杂化。在这种背景下&#xff0c;传统的手工测试方式已经无法满足测试需求&#xff0c;而自动化测试随之而生。 自动化测试可以提高测试效率和测试质量&#xff0c;减少重复性的测试工作&#xff0c;从而…

前端大概要知道的 AST

认识 AST 定义&#xff1a;在计算机科学中&#xff0c;抽象语法树是源代码语法结构的一种抽象表示。它以树状的形式表现编程语言的语法结构&#xff0c;树上的每个节点都表示源代码中的一种结构。之所以说语法是“抽象”的&#xff0c;是因为这里的语法并不会表示出真实语法中…

手机测试—adb

一、Android Debug Bridge 1.1 Android系统主要的目录 1.2 ADB工具介绍 ADB的全称为Android Debug Bridge,就是起到调试桥的作用,是Android SDK里面一个多用途调试工具,通过它可以和Android设备或模拟器通信,借助adb工具,我们可以管理设备或手机模拟器的状态。还可以进行很多…

【负荷预测】基于VMD-SSA-LSTM光伏功率预测【可以换数据变为其他负荷等预测】(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

文件小注意

目录 0 前言 1 标识 O_CREAT O_APPEND 2 ftruncate与truncate 3 O_DIRECT与O_DSYNC、O_SYNC 4 open与fopen 5 关于mmap 0 前言 文件操作在软件开发中是很常见的一件事。虽然与它相关的工作看起来不怎么起眼&#xff0c;无非就是通过通过open、read、write、close几个调用…

Unity——网格变形(制作一个压力球)

主要参考链接&#xff1a;Mesh Deformation, a Unity C# Tutorial&#xff08;本文为其翻译版&#xff09; unity项目下载链接&#xff1a;https://download.csdn.net/download/weixin_43042683/87679832 在物体上投射射线并画出调试线。将力转换为顶点的速度。用弹簧和阻尼保…

Rust社区引发舆论危机,问题到底出在哪儿?

围绕开源的法律问题&#xff0c;讨论焦点往往集中在开源许可证、软件著作权等方面&#xff0c;商标的讨论却极少引人关注。事实上&#xff0c;关于开源软件以及开源软件的衍生产品的商标使用情况往往处于某种灰色地带。 最近&#xff0c;Rust基金会正在就更新的商标政策征求反馈…

windows命令执行的几种绕过方法

windows命令执行的几种绕过方法介绍1、添加特殊符号2、定义变量3、切割字符串4、逻辑运算符在绕过中的作用5、利用for循环拼接命令介绍 反检测、反清理&#xff0c;是红队攻击中的重中之重&#xff0c;本文详细描述了几种windows执行命令的几种绕过手法。 1、添加特殊符号 w…

ERP软件的作用

ERP软件的运用是在企业管理系统的数据基础上实现的&#xff0c;它的应用涉及到企业的各个部门。ERP软件是在制造资源计划的基础上进一步发展而成的对企业供应链的管理软件。ERP是集采购、销售和库存、财务、生产管理和委托加工为一体的企业管理软件。它是集企业管理理念、业务流…

带你玩转Python爬虫(胆小者勿进)千万别做坏事·······

这节课很危险&#xff0c;哈哈哈哈&#xff0c;逗你们玩的 目录 写在前面 1 了解robots.txt 1.1 基础理解 1.2 使用robots.txt 2 Cookie 2.1 两种cookie处理方式 3 常用爬虫方法 3.1 bs4 3.1.1 基础介绍 3.1.2 bs4使用 3.1.2 使用例子 3.2 xpath 3.2.1 xpath基础介…