SpringBoot 介绍「建议收藏」

SpringBoot 介绍「建议收藏」SpringBoot介绍目录1.简介2.WhySpringBoot1.简介    SpringBoot最开始基于Spring4.0设计,是由Pivotal公司提供的框架。    SpringBoot发展史:2003年RodJohnson成立Interface公司,产品是SpringFramework2004年,Spring框架开源,公司改名为SpringSource2008年,收购ApacheSer

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

SpringBoot介绍

目录

1.简介
2.Why SpringBoot

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
    

PS:关于微服务的资料,可以看看Martin Fowler在2014年发表的博客:点这里

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/190573.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • idea 激活码2022_通用破解码

    idea 激活码2022_通用破解码,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月16日
    309
  • Android 的CompoundButton(抽象类按钮)、StringBuffer(字符串变量)「建议收藏」

    Android 的CompoundButton(抽象类按钮)、StringBuffer(字符串变量)「建议收藏」1、写在前面的话本人40岁纯小白一枚,最近对AndroidAPP有了兴趣,目前的任务:通过AndroidStudio利用Apchepoi、EasyExcel等第三方库,编写APP,实现移动端APP与后台Excel的数据交互。这次利用CSDN平台记录下自己的成长。纯属小白,有概念或者描述错误,希望大佬们不吝赐教,再此谢过。2、任务目标目前正在学习这本书,在做P110页的作业时,发现的问题:作业要求,点击“进入主页”的按钮,一次性获取已近选取的多选框的text属性,然后Toast出

    2022年7月18日
    15
  • source insight3.5注册码_sourceinsight激活成功教程版安装教程

    source insight3.5注册码_sourceinsight激活成功教程版安装教程sourceInsight的注册码是SI3US-361500-17409。

    2022年10月3日
    1
  • uefi shell 修复引导_磁盘主引导损坏怎么办

    uefi shell 修复引导_磁盘主引导损坏怎么办1、 红旗DC5.032bit莫名其妙死机,(服务器是ibmx36502008年左右的机器),硬重启后无法启动,极其缓慢,到最后报错:a)        Init:cannotexecute“etc/rc.d/rc”b)       各种初始化失败,root卷组无法挂载;c)        服务器四块盘,只有一块不停地闪烁,其他几乎没有响应;d)       初步判断,

    2022年8月20日
    35
  • java属于什么语言_java是什么语言 ?是什么系统?

    java属于什么语言_java是什么语言 ?是什么系统?一开始了解计算机这个专业,大家都会经常性听到Java这一词语,那么大家有真正的了解什么是Java吗?Java是属于什么语言呢?JAVA语言,其实是混合型的一种语言,Java语言是一个支持网络计算的面向对象程序设计语言。Java语言吸收了Smalltalk语言和C++语言的优点。下面来介绍一些Java的主要特征:1)Java语言是简单的。Java语言的语法与C语言和C++语言相似,这让很多程序员可…

    2022年7月8日
    21
  • Android基础教程学习(一)

    Android基础教程学习(一)1.1安装工具想要进行Android开发,必须先安装java,IDE和AndroidSDK.1.1.1Java开发包首先,需要先安装Java开发包(JDK).所有Android开发工具都需要它,在编写程序时我用的Java语言.我安装的是JDK8.建议去Oracle官网下载:JavaArchive|Oracle然后去配置环境变量JAVA_HOME,使其指向JDK安装位置.(网上教程很多)安装完成之后可以打…

    2022年6月11日
    33

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号