Spring、SpringBoot、SpringCloud还是傻傻分不清? 您所在的位置:网站首页 现在买aj会不会过时了 Spring、SpringBoot、SpringCloud还是傻傻分不清?

Spring、SpringBoot、SpringCloud还是傻傻分不清?

2024-07-16 00:06| 来源: 网络整理| 查看: 265

去年,花了几十元买了个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



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有