【Spring(一)】初识Spring(史上最详细的Spring介绍!)

前言

在学习 Spring 之前,我们需要先知道为什么要学习它?
   IT业的任何一门技术,它只有抢占了很强的市场占有率,才会有更多的人使用和学习它,Spring技术在我们Java开发界拥有一个什么样的地位呢?可以这么说,现在Spring技术是企业级开发的一个必备技能,首选的技术。🎈🎈百分之九十以上的项目,都在应用 Spring 技术进行开发。看到这样一个占有率,我们就要想,为什么这么多人选它呢?难道就是用它的人多吗?🤔🤔当然不是,每一个技术都是用来解决问题的,Spring 技术也是这样,正因为它解决了我们开发中的问题,所以才有更多的人去选择它,更多的公司去使用它,那它给我们解决了什么问题呢?两个核心点👉👉

  • 1.简化开发,从最早出现到现在,规模变得越来越大,功能变得越来越多,开发难度变得越来越复杂,在这样一个背景前提下,Spring 能够脱颖而出,使用Spring技术可以降低企业级开发的复杂性🎉🎉。单从这一点来说,我们是不是就觉得这个技术是非用不可的呀,因为做什么事情我们想的应该是越简单越好,越高效越好🤣🤣。而Spring技术恰巧就做到了这一点,这是它的第一个比较大的优势。
  • 框架整合,现在企业级开发大部分都是使用一些现成的技术组合在一起使用,前期我们学过MyBatis框架,(只是简单了解了一下🤦‍♂️🤦‍♂️) 简化了JDBC的开发,同样的道理,以后我们会学习各种各样的框架,来解决我们对应的一个又一个的问题,这个时候新的问题就来了👉👉,这么多框架合作在一起工作的话,就会变得越来越庞杂,我们在开发的时候复杂度就会变得越来越高😫😫,而Spring它可以整合框架🎈🎈,那么那么多框架都交给Spring这门技术来管理的话,我们会发现它的开发效率会变高,同时它的运行速率也能提升😁😁,这样一个特点,才使我们的开发者👨‍💻👨‍💻越来越离不开Spring。
    知道为什么要学习Spring以后,我们需要知道学习Spring要学习哪些东西?
      看完Spring的两大特征以后,我们应该知道,它里边的技术一定是围绕这些东西展开的,因此,在Spring中,我们将学习以下内容👉👉
  • 简化开发
    • Spring提供了两大核心技术:
      • IOC(控制反转)
      • AOP(切面编程)。
      • 事务处理
          正是有了这两大核心技术的存在,我们才能进行简化开发👏👏,因此,这两大技术是我们首先需要学习的内容✍️✍️,基于 AOP的思想之上,又衍生出了一个事务处理,而Spring的事务处理是Spring技术中的一个亮点,它让我们的事务编写更高效,更简单,并且功能更强大💪💪,这就是Spring给我们提供的三块东西,来让我们简化开发👨‍💻👨‍💻。
  • 框架整合
      对于框架整合 ,Spring可谓是做到了极致,它能够整合市面上现在主流的几乎所有的框架😦😦,我们会学习已经学过的MyBatis框架整合到Spring中。

1.初识Spring

  我们在知道要学Spring的什么以后,先来了解一下Spring的大家族,Spring不光是一门技术,它还是一个家族👪👪,对于Spring大家族,我们从它的官网看起👉👉Spring官网
在这里插入图片描述
  在Spring主页中给我们提供的最重要的信息如下👇👇
在这里插入图片描述
  讲的是什么呢?讲的是Spring能干的事情,这里面有我们非常熟悉的东西,比如说 web开发,当然Spring也能做微服务的开发,除此之外,Spring还比较擅长做分布式系统的开发,光这三点就已经占据了现在JavaEE市场主流开发的九成以上了🙈🙈。 Spring并不是一个单一的技术🚨🚨, 它实际上是一个大家族👇👇
在这里插入图片描述
  在Projects里边介绍了Spring所有的技术,点开第一个概述(可能比较慢,需要耐心等待一下)👇👇
在这里插入图片描述
  进来以后我们会发现,上面每个单元就是一个独立的技术☝️☝️,那么这些技术组成了Spring的整个大家族,点开任何一个技术名称,在左边列表了它所有的技术名称,位置靠前的相对来说是重要度比较高的,也是现在在市面上使用量比较大的技术👇👇。
在这里插入图片描述
  对于Spring来说,它既是一门技术,也是一个大家族,里面包含了若干个项目,因此现在的Spring已经不单单是帮我们做一些简单的开发了🎈🎈,它已经形成了一套自己的独有的开发的生态圈,什么意思呢,也就是说你可以完全在Spring的解决方案下把你的项目给构建出来,并且设计开发完成,而里边的每个项目都有自己独立的功能,根据你的使用需要来进行选择👨‍💻👨‍💻,基于这样一个特征,我们说你开发完全可以在它的技术栈中进行选择,就像你去快餐店吃饭的时候说,我要这个我要那个,Spring现在就可以做到你用这个,你用那个,几个组合在一起来把整个项目开发出来,因此,对于开发界来说,给它一个非常好听的名称,叫做Spring全家桶🎉🎉,来一桶里边什么都有🤣🤣,能帮你做很多的事情t,这么多技术,我们不可能全部都学习, 我们要学习哪些呢?
  第一个要隆重介绍的叫做Spring Framework🎈🎈

  Framework翻译过来叫做框架,这是所有技术中的第一门技术,也就是说Spring最早出现的就是这门技术,而我们学的就是它✍️✍️。那么它在整个全家桶中的地位如何呢?其他的所有的技术都是依赖它执行的。所以它是一个底层的框架,它是一个设计型的框架,所有东西都能放在它上边运行,因此,它在整个Spring家族中有着举足轻重的地位👍👍。

  第二个我们要介绍的是Spring Boot🎈🎈

  前边我们说过,Spring可以简化开发,使用Spring Boot技术可以在简化开发的基础上加速开发🚀🚀,它是用来提高开发速度的,它会让我们原先的Spring开发变得更加简单,书写更少的东西。所以说,Spring Boot技术问世以后,快速进行了推广🛸🛸,所有的开发者都爱不释手🌈🌈。

  第三个我们要介绍的叫做Spring Cloud🎈🎈

  这是我们前边所说的分布式开发的相关技术了,这三个技术基本上就能够应对我们企业级开发所有的主流工作了。当然我们也可以再使用其他的技术,例如Spring Data,Spring Session等等一系列的技术,来丰富你开发过程中所使用到的解决方案,有关Spring家族我们先聊到这🎉🎉。

2.Spring Framework系统架构

  在我们了解完Spring之后,我们将学习Spring Framework的系统架构🎈🎈

Spring Framework 是现在Spring生态圈中最基础的项目, 也是Spring全家桶中最顶级的项目,其他的所有的项目都在它的基础上运行使用👍👍,那么这么重要的项目也不是一次就设计完成的✍️✍️,是经过了若干个版本的迭代演进👇👇。

在这里插入图片描述

  我们可以看到每一个版本都会有一些模块关系的调整,甚至加入了一些新的东西,去掉了一些小的功能🙏🙏。现在我们要学习的Spring5系列对应的架构图长什么样呢?很遗憾官方文档中没有提供全新的架构图,言外之意,Spring4系列的架构图已经趋于了稳定🎉🎉。所以我们现在学习的实际上是4系列的架构图。接下来我们具体学习Spring4系列的这张架构图✍️✍️。
在这里插入图片描述

对于Spring的系统架构图,我们从哪个模块开始说起呢?

  第一个模块叫做 Core Container:核心容器🎈🎈
在这里插入图片描述

  这个模块是Spring框架中的最核心的部分🚩🚩,其他所有的模块都是依赖它运行的,看到容器这样一个词,我们可以想到它是装东西的,装什么呢?对于Java程序来说,只有一种东西可以装,那就是对象,所以根据这样一个结构设计来看,Spring它是一个用来管对象的技术🎈🎈,这是系统架构中的第一块。

  第二块我们要说什么呢?叫做AOP(面向切面编程)🎈🎈

  在说它之前,我们先说一下,系统架构图讲究上层依赖于下层,AOP技术放在以下位置👇👇,说明它要依赖容器的执行,首先明确这一点,再来说AOP,什么是AOP,就是面向切面编程🚩🚩,于我们前期学的面向对象编程(OOP)就差了一个字母,那它是什么呢?其实和面向对象编程一样,它也是一种编程思想,换句话说,它教你程序应该怎么做,又是一个设计型的概念🙏🙏,而我们的Spring对这种设计型的概念进行了落地💪💪, 具体AOP技术是做什么的呢?它可以在不惊动你原始程序的基础上,给它增强功能🎉🎉,旁边的Aspects又是干什么的呢?它也是对AOP思想进行了实现,Spring发现Aspects的制作已经做的非常好了,于是大胆的将它收录到它的整个技术栈中,就告诉大家,Aspects 比我做得好,建议用这个东西,所以后边开发我们会发现,我们学习Spring的AOP开发的时候,除了要导Spring AOP的坐标,还要导Aspects的坐标,这是Spring的第二个核心大块🚩🚩
在这里插入图片描述

  下面我们来说第三个大块,叫做Data Access🎈🎈

  可以参考下图👇👇,Data Access什么意思,就是数据访问,前边学习的DAO叫做 Data Access Object:数据访问对象,所以这一块是在做与数据层相关的技术✍️✍️, 后边这个词Integration什么意思,叫做数据集成,怎么解释呢?Spring内部不仅提供了自主的访问数据层的技术,同时它还支持你用Spring技术和其他技术整合使用🎉🎉,而这个集成表示的是它包容其他技术。比如说MyBatis可以和Spring一起整合使用,这是我们要说的Spring第三块的东西💪💪。
在这里插入图片描述

  在整个数据访问这个大的模块中☝️☝️,有一个东西需要单独介绍,叫做Transactions:事务🎈🎈

  Spring在事务这个方面做了非常大的突破💪💪,给我们提供了开发起来效率非常高的事务控制方案,所以这一块对我们来说是非常重要的!!🚩🚩

  第四块又是什么呢?叫做Web:web开发🎈🎈

  Spring也可以进行web开发👇👇,我们会在 Spring MVC 中进一步学习✍️✍️。
在这里插入图片描述

  最后一块内容在最下边,叫做Test:单元测试与集成测试🎈🎈

  看到Test我们应该知道,这是做测试,Spring在单元测试跟集成测试方面也给我们提供了一些帮助性的操作,我们主要学习单元测试相关的内容✍️✍️。这就是整个Spring架构包含的内容👇👇
在这里插入图片描述

3.核心概念

  接下来我们进入核心概念的学习🌤️🌤️,在这之前,我们代码书写的状况是:耦合性偏高,如下图👇👇,众所周知,我们写代码一直追求的是低耦合,后来提出的解决方法是:使用对象时,在程序中不要主动使用new产生对象,转换为由外部提供对象🎈🎈。这样的一种思想就叫做: IOC(控制反转)🚩🚩。
在这里插入图片描述

  什么意思呢,也就是让创建对象这件事,不要程序自己去做了,对象的创建控制权转移到外部,这种思想称为控制反转🎊🎊,这么做有什么好处吗,它想达到一个什么样的效果,其实就是为了做一件事,那就是解耦💪💪。而Spring技术对IOC思想进行了实现,Spring在内部提供了一个容器,称为IOC容器,或者称为Spring容器,用来充当IOC思想中的外部🎉🎉。IOC容器中管了大量的对象,管理对象的创建以及初始化的过程,也就是以后造对象程序不用管了,由IOC容器管自己造的对象,它管它造出来的对象不叫对象,而是叫做Bean🎈🎈

  如下图👇👇,我们在运行程序的时候还是会报错,原因在于Service的运行要依赖DAO对象运行,但是你光给我造了一个Service的对象,而我Service运行需要DAO才能运行✍️✍️。IOC一看,就说既然你Service需要依赖这个DAO运行,而巧了,这俩对象都在我容器里,干脆我也把这活给你干了🤣🤣,怎么干呢,它把你的Service和你DAO之间的依赖关系给你绑定上,也就是说你Service里边的DAO对象,Spring容器直接把这个东西给到你,你不就有了,这样你不就可以运行了👏👏,这种思想就叫做:DI(依赖注入)🚩🚩
在这里插入图片描述

   也就是在容器中,如果你两个bean之间存在着依赖关系,IOC容器直接将这俩关系给你绑定了,绑好。绑关系的整个过程叫做依赖注入🚩🚩。绑完之后的效果是:你现在再拿Service对象的时候,你想用里边的DAO,直接就有对象,这样就很舒服了🌤️🌤️,我们的程序也能运行了,也达到了我们的目标:充分解耦了😄😄。最终的效果是:使用对象时不仅可以直接从IOC容器里边获取,并且获取到的bean已经绑定了所有的依赖关系🎉🎉。这样,我们就讲完了核心概念的内容🎈🎈

  • 31
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 38
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 38
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

续写青春.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值