Spring核心概念

news/2024/11/29 5:43:18/

一、Spring是什么?如何理解Spring

我们通常所说的Spring,其实也就是Spring Framework ,是java圈子里应用非常广泛的一种框架,如果用一句话概括,那就可以说Spring是包含了众多工具方法的IoC容器。

如果需要对这个概述做进一步阐释,前半句没什么好说的,那我们就需要从IoC和容器这两个角度来入手进一步讨论。

二、IoC和DI是啥?有啥区别?

一说起这个IoC,我们一般会和这个DI联想到一起,他们就跟一对CP一样,所以理清楚他俩之间的联系也可以帮助理解。当然我还是先分别说说我对他俩的理解再说其他的哈。

IoC其实是Inversion of Control的缩写,其实翻译成中文,我们可以理解为是控制权的反转。这里我举一个例子来说明:

假定我们要造车子,按照一般的思路是从车--》框架--》车底--》轮胎的吧,那么如果将这个过程程序化,我们就需要定一个Car类,然后里边有个Frame的对象,然后定义Frame类,里边有一个Bottom对象,再定一个Bottom类,里边有一个Tire对象,最后Tire类里边有造一辆车需要的最基本的属性,比如,轮胎大小,轮胎的颜色(红、蓝、黑、白),这一组程序中,Car对象就对Frame对象有控制权,Frame对象就对Bottom,Bottom对Tire有控制权。但是试想,现在来了个超级有钱的少爷或者小姐说,我有钱,我不想要和别人一样款式的车,我要超级拉风的车子,车线要流畅,要非常酷/靓,颜色要个黑曜色/暗夜紫,轮胎要个更大的,再加一些别人没有的配置等等一些类要求,这个生意做吗!当然得做!但是我们如果按照现有的工厂模式,一层嵌一层的,想要完成这笔订单,得非老力了,我们这整个调用链上的代码都得调整。

但是如果我们换个思路,不在每个类下边创建自己依赖的子类,而是直接在终端创建对象,然后一层一层的放到需要依赖它的对象里边,这样即使下层发生变化,上层也不需要改动任何代码。这样就可以完成了程序的耦合性,实现了车子定制化自由~~

后边思路里相当于Tire对象对Bottom对象有控制权,Bottom对Frame,Frame对car有控制权,与之前相比,发生了控制权反转,这个对象控制权发生反转的过程,就体现了IoC思想。

至于DI,其实也就是Dependency Injection即依赖注入,也就是把依赖的某个对象动态的拿到当前类的行为。

关于两者的联系,相同的是它都描述了同一件事,就是通过依赖关系注入的方式,实现对象之间的解耦,都有方便、高效、解耦的优点,不同的是IoC是一种思想,DI则是IoC思想落地的具体实现。

三、Spring最核心的功能是啥?

简单来讲,就是两个,一是从spring容器中取对象,而是从往spring容器中放对象

具体说存取的流程的话,就是首先创建一个spring项目,然后创建一个Bean,并把它注册到spring的配置文件中(resources目录下);取Bean的话就是获取全局配置文件,创建spring上下文对象,通过getBean获取bean,然后使用bean。


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

相关文章

基于神经辐射场NeRF的SLAM方法

随着2020年NeRF[1]的横空出世,神经辐射场方法(Neural Radiance Fields)如雨后春笋般铺天盖地卷来。NeRF最初用来进行图像渲染,即给定相机视角,渲染出该视角下的图像。NeRF是建立在已有相机位姿的情况下,但在…

Linux kernel中几个文件的作用

apic/vector.c 是 Linux 内核中的一个文件,其中包含用于处理高级可编程中断控制器 (APIC) 上的中断向量的代码。 中断向量是与设备生成的每个中断请求相关联的唯一标识符。 当中断被触发时,CPU使用向量跳转到相应的中断服务程序(ISR&#xff…

【数据结构与算法】一、数据结构的基本概念

文章目录一、数据结构的基本概念1.1 数据结构的研究内容1.2 数据类型和抽象数据类型1.3 算法和算法分析1.3.1 算法的时间复杂度1.3.2 算法时间效率的比较1.4 知识回顾一、数据结构的基本概念 1.1 数据结构的研究内容 1.2 数据类型和抽象数据类型 抽象数据类型(ADT…

浅谈 如果做微服务了 这个模块怎么去划分?

如果做微服务了 这个模块怎么去划分? 还是高内聚 低耦合的一个思想吧 ,单一职责的设计原则,也是一个封装的思想吧, 业务维度: ​ 按照业务的关联程度来决定,关联比较密切的业务适合拆分为一个微服务&…

阿里云linux云服务器 安装指定版本node.js

我们在实例管理中找到自己的服务器 然后点击右侧的 远程连接 接着点击理解登录 进入命令窗口 我们在这上面输入 curl -h阿里云的服务器都还是最好会有 curl的 然后 我们输入 sudo curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash下把nv…

CCC 数字钥匙学习笔记 - 车主配对命令

整理了一下CCC组织的汽车数字钥匙Release 3中关于车主配对Owner Paring,过程的APDU指令和数据说明。基本可以算是在车端的角度进行车主配对操作。里面的章节表格编号,都按照CCC数字钥匙Release 3文档中的编号走,方便将来检索对照。 车主配对…

(邱维声)高等代数课程笔记:行列式按一行(列)展开

行列式按一行(列)展开 例题 1:一般地,设 ∣A∣|A|∣A∣ 是一个三阶行列式,则有 ∣A∣∣a11a12a13a21a22a23a31a32a33∣a11a22a33a12a23a31a13a21a32−a13a22a31−a12a21a33−a11a23a32a11(a22a23−a23a32)−a21(a12a3…

如何在DevOps中进行API生命周期管理?

引言 随着DevOps理念在中国企业当中的普及和发展,中国企业DevOps落地成熟度不断提升,根据中国信通院的数据已有近6成企业向全生命周期管理迈进。而在研发全生命周期管理之中,API管理的地位愈发显得重要。随着API数量的大幅增长,也…