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

news/2025/1/11 16:55:46/

文章目录

  • 前言
  • 1.初识Spring
  • 2.Spring Framework系统架构
  • 3.核心概念

前言

在学习 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已经绑定了所有的依赖关系🎉🎉。这样,我们就讲完了核心概念的内容🎈🎈


http://www.ppmy.cn/news/7244.html

相关文章

167. 两数之和 II - 输入有序数组(暴力+二分查找+相向双指针)

目录 前言 一、 暴力求解 二、 二分查找 三、相向双指针 前言 题目描述: 给你一个下标从 1 开始的整数数组 numbers,该数组已按非递减顺序排列(即从小到大排列,中间可以有数字重复),请你从数组中找出…

易基因|动物发育过程中顺式调控区域的活性DNA去甲基化早于脊椎动物起源:重磅研究

大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。 2022年12月02日,澳大利亚悉尼加尔文医学研究所基因组学和表观遗传学系Ozren Bogdanovic研究团队在《SCIENCE ADVANCES》杂志发表了题为“Active DNA demethylation of develo…

【OpenCV-Python】教程:9-1 级联分类器训练

OpenCV Python 级联分类器训练 【介绍】 使用增强的弱分类器级联包括两个主要阶段: 训练和检测阶段。使用基于HAAR或LBP模型的检测,在object detection tutorial中进行了描述。本文档概述了训练您自己的增强弱分类器级联所需的功能。当前的手册将走过所有不同的阶段: 收集训练…

全志 芯片 Linux MIPI CSI摄像头接口开发指南 VIN DVP CSI MIPI V4l2

1 前言 1.1 文档简介 介绍 VIN(video input)驱动配置,API 接口和上层使用方法。 1.2 目标读者 camera 驱动开发、维护人员和应用开发人员。 1.3 适用范围 ​ 表 1-1: 适用产品列表 内核版本驱动文件Linux-4.9drivers/media/platform/s…

Himall商城文件操作接口Commons

/// <summary> /// 删除文件 /// </summary> /// <param name="fileName">文件名称</param> void DeleteFile(string fileName); /// <summary> /// 删除多个文件 /// </summary&…

FFT求多项式乘积

文章目录引入单位根快速傅里叶变换的数学证明IFFT朴素版FFT函数代码优化FFT参考资料引入 之前在b站上看到了一些介绍FFT的视频 《快速傅里叶变换(FFT)——有史以来最巧妙的算法&#xff1f;》 《这个算法改变了世界》 于是打算写一篇记录一下qwq&#xff08;本博客中的截图基…

【Macbook】精选的MAC电脑软件推荐

1、终端软件&#xff1a;iTerm 下载地址&#xff1a;iTerm2 - macOS Terminal Replacement iTerm2 是一款功能强大的终端工具&#xff0c;也可以说是 Terminal 的替代品&#xff0c;也可以说是 iTerm 的后继产品。它适用于 macOS 10.12 或更高版本的 macOS。 它支持分窗口操作…

菜鸟也能懂的 - 音视频基础知识。

前言 说到视频&#xff0c;大家自己脑子里基本都会想起电影、电视剧、在线视频等等&#xff0c;也会想起一些视频格式 AVI、MP4、RMVB、MKV等等。 但是我们如果认真思考这些应该就有很多疑问&#xff0c;比如以下问题&#xff1a; mp4 和 mkv有什么区别 &#xff1f; 视频封装…