去年,花了几十元买了个SpringMVC+Spring+Mybatis的课程,顺便发到了朋友圈里,这时有个前同事评论,现在都什么年代了,还学Spring框架,Spring早就过时了,现今流行SpringBoot和SpringCloud的!

看到他的评论,没有说什么。按照以往的说话风格,会以疑问句的方式反问他,你确定真的过时了?那么SpringBoot和SpringCloud又是从何而来?

在15年的时候,开始接触SSH(Spring、Struct、Hibernate)框架,在18年的时候开始使用SpringBoot、SpringCloud,SpringMVC框架直接忽略掉了;特别是这几年间,一直忙于编码,拷贝别人的编码,很少去研究原理性的东西。

直到面试一家新公司,才发现自己所知甚少,一问三不知。拷贝别人的代码是很容易,怎么就不能多看看源码,多深入思考一下呢?知道怎么做,却不知道为什么这么做,徒有那么多年的开发经验。

想要深入理解原理,在实施拿来主义的前提下,还是要抽出一些时间去研究一下背后的原理的,不然真的枉对这么多年的经验。

针对Spring面试时的题目,大抵都是那么几个,核心理念,核心理念的理解和应用,再具体点,到底怎么用。从抽象到具体,从概念到应用,从架构到具体的实现细节。

Spring、SpringBoot、SpringCloud的,既然都带有Spring的字样,那么中间必然有这样那样千丝万缕的联系,在面试时,能把这中间的关系说清楚吗?更有甚者,是要画原理图的。

为了加深记忆,Spring的发展史也不要错过:

2002年,一位澳大利亚的工程师,一位音乐博士发布了一本著作,并在著作中首次提出了Spring框架的核心理念。
2003年发布了0.X版本,在2004该博士又主导发布了1.0版本,1.0版本只能支持XML文件形式,还不能支持注解。
随着JDK5的发布,增加了注解的特性;2007年,与之相对应的Spring2.0也开始支持注解,这时只能支持少量的注解,比如@Component、@Service等;
2009年12月,Spring3.0发布,引入了更多的注解功能。
2013年12月,Spring4.0发布,注解功能越来越强大,可以完全脱离XML文件;
2014年,SpringBoot诞生。
2017年的时候,Spring5.X发布,可以有效地支持Java 9的开发。
2018年3月,SpringBoot推出2.0.0版本。

Spring框架的核心理念,IoC控制反转、依赖注入和AOP;SpringBoot的诞生又是如何,和Spring框架有关系吗?

答案是肯定的,SpringBoot的诞生是为了简化Spring开发、部署和测试的;传统的Spring开发,需要打包成一个War包,发布到Tomcat等容器里,启动Tomcat等容器后,才能运行项目。

SpringBoot提供一个starter, 创建一个独立的Spring应用程序,内嵌Tomcat等容器,无需部署WAR包,允许使用maven来根据需要获取starter;默认的自动配置;对xml没有硬性要求配置。

SpringBoot是基于Spring框架搭建起来的应用,所以说怎么能离开Spring框架呢?又怎么能和Spring脱离干系呢?

在单独使用Spring框架搭建项目的时候,在使用SSH框架的时候,本地是需要下载一个Tomcat容器来运行项目的,SpringBoot则把Tomcat容器内置在项目里面了,也就无需配置运行的容器了。

在使用架包上,也方便了不少,只需要在pom文件中引入,使用maven即可下载到本地仓库,根本就不需要一个架包一个架包下载下来。

SpringBoot的核心思想是,约定优于配置。好好地回忆一下,在使用SpringBoot创建新项目的时候,基本上都使用过默认的配置。复杂的配置,再去覆盖框架里默认的配置。

不要小看SpringBoot的这个starter,在pom文件中,点进starter去看时,它把开发一个功能所需的架构都引入了进来。在搭建项目的时候,只需要很少量的代码就可以将项目运行起来。

对于习惯了配置传统项目的人来说,这不知方便了多少。对于一个新手,更是降低了搭建项目的技术门槛。

SpringBoot的版本号是使用数字表示的,每个版本后又标有红绿蓝黑背景的字样,它们是有一定含义的。

SpringBoot的版本

Spring Boot 2.2.5.RELEASE的含义是:主版本.次版本.增量版本(Bug修复);
版本后的备注如下:

版本备注 详细说明
Alpha 不建议使用,主要是以实现软件功能为主,通常只在软件开发者内部交流,Bug较多
Beta 该版本相对于α版已有了很大的改进,消除了严重的错误,但还是存在着一些缺陷,需要经过多次测试来进一步消除
GA General Availability,正式版本,官方推荐使用此版本,在国外都是用GA来说明release版本
M 又叫里程碑版本,表示该版本较之前版本有功能上的重大更新
PRE(不建议使用) 预览版,内部测试版,主要是给开发人员和测试人员测试和找BUG用的
Release 最终版本,Release不会以单词形式出现在软件封面上,取而代之的是符号(R)
RC 该版本已经相当成熟了,基本上不存在导致错误的BUG,与即将发行的正式版相差无几
SNAPSHOT 快照版,可以稳定使用,且仍在继续改进版本

SpringCloud是基于SpringBoot实现的微服务架构开发组件,SpringCloud也需要对应SpringBoot的版本,不然会遇到各种各样的奇怪错误。

SpringCloud是一个项目概况,其下又包括很多子项目,采用伦敦地铁站的英文名字来命名,以A-Z字母顺序表的方式发布。

SpringCloud下的子项目

所以在使用SpringCloud子项目的时候,一定要和SpringBoot的版本对应上:

Release Train Boot Version
Hoxton 2.2.x
Greenwich 2.1.x
Finchley 2.0.x
Edgware 1.5.x
Dalston 1.5.x

通过本文的整理,我已经能够把Spring、SpringBoot和SpringCloud三者之间的关系搞明白,相信屏目前聪明的你也看明白了。

了解它们三者之间的关系还是第一步,在面试的时候,仅仅知道他们三者之间的关系还是不够的。苛刻的面试官们,会一步一步的深入,一点一点地考察,看看你对它们的理解到了什么程度。

说一说Spring的核心理念,什么是IoC控制反转,什么是AOP,它们都应用在哪里?又比如说RestFul设计规范是什么,如何使用的,你们的接口平时又是如何命名的?

还比如说SpringCloud下又有很多的组件,每个组件的原理是什么,如何使用的。随便摸出来一个,就像一颗定时炸弹一样,随时等待着被揭穿。

有对比才有差异,当你对几个概念都感觉模棱两可时,不妨把它们都拿出来,摆在桌面上,对比一番,这样就可以知道它们之间的联系与区别了。

喝水不忘打井人,参考资料:
https://www.cnblogs.com/chsoul/p/12545137.html
https://spring.io/projects/spring-cloud#learn
https://spring.io/projects/spring-boot#learn

原文连接:https://www.jianshu.com/p/bd81c0c0b717

Spring、SpringBoot、SpringCloud还是傻傻分不清?相关推荐

  1. 国防大学计算机学院,国防大学和国防科技大学是同一所学校吗?很多人傻傻都分不清!...

    国防大学和国防科技大学,这两所大学名字相近,极易混淆,在很多网站搜索"国防大学录取分数线",出来的全是国防科技大学的的高考录取分数线,所以给广大考生带来了很大困惑,难道国防大学和国 ...

  2. Spring相关文章汇总篇【Spring,SpringBoot,SpringCloud等】

      因为Spring框架包含的组件比较多,写的博客内容也比较多,虽然有分专栏但是依然不方便查找,所以专门用一篇文章来记录相关文章,会不定期更新. 一.Spring 1.基础内容 Spring介绍 Sp ...

  3. spring springboot springcloud常用注解

    @SpringBootApplication 组合注解,用在启动类上,源码: @Retention(RetentionPolicy.RUNTIME) @SpringBootConfiguration ...

  4. 一站到底,Spring+SpringBoot+SpringCloud全攻略,是真的全面

    前言 Spring是一个开源框架,它由Rod Johnson创建.它是为了解决企业应用开发的复杂性而创建的.Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情.然而,Spring ...

  5. Alibaba官方上线!SpringBoot+SpringCloud全彩指南(终极版)

    Alibaba作为国内一线互联网大厂,其中SpringCloudAlibaba更是阿里微服务最具代表性的技术之一,很多人只知道SpringCloudAlibaba其实面向微服务技术基本上都有的下面就给 ...

  6. Executor 与 ExecutorService 和 Executors 傻傻分不清

    转载自  Executor 与 ExecutorService 和 Executors 傻傻分不清 java.util.concurrent.Executor, java.util.concurren ...

  7. 国家电网和南方电网还傻傻分不清?

    参看:都2020年了,国家电网和南方电网还傻傻分不清? 一.名称不同 一个叫南方电网,一个叫国家电力电网,虽然都是电网,但是区别还是很大的 而且成立时间不一样:国家电力电网有限公司成立于2002年12 ...

  8. cdn厂商 同兴万点_同兴万点:TXNetworks和CDNetworks让我们傻傻分不清

    原标题:同兴万点:TXNetworks和CDNetworks让我们傻傻分不清 在2008年2月25日成立的同兴万点,公司全称为同兴万点(北京)网络技术有限公司(TXNetworks),一直专注于CDN ...

  9. 2运行内存多大_智能设备中的内存与容量为何傻傻分不清?它们的区别是什么?...

    在日常生活中,很多时候会把某些电子产品的容量说成内存,或者把内存说成了容量.比如有人问:"这个手机的内存多大?"或许会有这样回答的:"内存是256G."这种问答 ...

  10. 数据平台、大数据平台、数据中台……傻傻分不清?这次终于有人讲明白了!

    来源 | 智领云科技 造概念,在IT行业可不是一件陌生的事儿,中文博大精深,新名词.新概念往往简单准确,既可以被大众接受,又可以被专家把玩,真正做到雅俗共赏.各有趣味.近年来,数据中台之火爆,什么数据 ...

最新文章

  1. 学习笔记第三十一节课
  2. Spring Boot 入门(五):集成 AOP 进行日志管理
  3. Python生成随机数总结
  4. fullgc频繁的原因_系统运行缓慢,CPU 100%,Full GC次数过多,这一招帮你全搞定
  5. 获取键盘录入的5个int数,并存放到int数组arr中,输入前提示输入的是第几个值 * * 2.2 传递数组arr调用getNum(int[] arr)方法,获取返回值,并打印输出
  6. ListDictionary:改进的OrderedDictionary
  7. Python-turtle库绘制蚊香、走动的时钟和数码管日期
  8. 4.剑指Offer --- 解决面试题的思路
  9. 190223每日一句
  10. 破解有道翻译反爬虫机制
  11. scrapy+selenium之中国裁判文书网文书爬取
  12. ThreadLocal原理及使用场景
  13. 想学Python爬虫么?很简单的鸭~第二课
  14. 2021数学建模国赛A题
  15. Hadoop实例学习(十三) Join应用
  16. [和平之月系列] 《都 Ancient City Ⅱ》 钢琴
  17. 小米手机安装linux视频教程,屏幕失灵的小米5手机安装linuxdeploy centos7记录
  18. CCF ChinaSoft 2022预告丨形式化方法工业应用前沿分论坛 暨中科国创高可信联合上海控安新品发布...
  19. 关于支持电脑登录选项设置
  20. Android开发之

热门文章

  1. 1.4 SIG MESH协议各个层的作用
  2. WebDAV之葫芦儿·派盘+网盘精灵
  3. 天正启动时加载那些lisp_怎么在启动CAD时自动加载Lisp的工具和插件
  4. C# winform动态画条形统计图
  5. 2021年全球飞机维护、维修和运行收入大约93440百万美元,预计2028年达到116920百万美元,2022至2028期间,年复合增长率CAGR为3.5%
  6. 给即将大三找方向的同学:放下焦虑,行动起来
  7. 合并多个txt文本文件的内容
  8. 第二十一篇 数据增强
  9. 批处理研究(QQ绿化和卸载)
  10. rosdep init和rosdep update出错的解决办法