一.Spring 是什么?
首先我们来看看官网的解释
Spring 使每个人都可以更快、更轻松、更安全地进行 Java 编程。Spring 对速度、简单性和生产力的关注使其成为 世界上最受欢迎的 Java框架。
这里我简单的说明一下什么是spring?
我们通常所说的 Spring 指的是 Spring Framework(Spring 框架),它是⼀个开源框架,有着活跃⽽庞⼤的社区,这就是它之所以能⻓久不衰的原因。Spring ⽀持⼴泛的应⽤场景,它可以让 Java 企业级的应⽤程序开发起来更简单.
⽤⼀句话概括 Spring:Spring 是包含了众多⼯具⽅法的 IoC 容器。
接下来我们将解释这两个概念.
1.什么是容器
2.什么是Ioc
1.1 什么是容器
如果解释容器的概念的话.
百度百科给出生活中的概念,用来容纳某种物品的基本装置
其实我们在开发阶段中,就已经遇到过了,例如:
List/Map -> 数据存储容器
Tomcat -> web容器
1.2 什么是Ioc?
loC = Inversion of Control翻译成中文是“控制反转”的意思,也就是说Spring是一个“控制反转”的容器,怎么理解这句话呢,我们先从以下示例开始。
我会用一个例子,来解释这个Ioc机制.
1.2.1传统式开发
假如,我们现在构建一辆“车”的程序,我们的实现思路是这样的:
代码如下:
1.2.2 控制反转式程序开发
现在我们构建一辆车的思路是这样的.
具体代码如下:
我们来做一个总结.
经过这样一个流程,我们知道IoC不是一个具体的技术,它是一个思想。
用另外的一个话题说,我们做的一切操作都像是解耦操作一样,大家细细去体会就知道了.
1.3 什么spring Ioc
回到我们的主题Spring,本文刚开始咱们就讲:Spring 是包含了多个工具方法的 loC容器,这就是对Spring最核心的总结。“集成多个工具方法”这事咱们以后慢慢再讲,那如何理解"Spring是一个loC容器”这句话呢?
既然Spring 是一个 loC(控制反转)容器,重点还在“容器”二字上,那么它就具备两个最基础的功能:
- 将对象存入到容器;
- 从容器中取出对象。
也就是说学Spring 最核心的功能,就是学如何将对象存入到Spring 中,再从 Spring 中获取对象的过程。
Spring 是⼀个 IoC 容器,说的是对象的创建和销毁的权利都交给 Spring 来管理了,它本身⼜具备了存储对象和获取对象的能⼒。
优点:
1.解耦
2.使用更加方便(不再需要手动创建,和关注这个对象背后的依赖关系)A->B
3.更加高效
1.4 DI 概念说明
Dependency Injection的缩写 依赖注入
所谓依赖注⼊,就是由 IoC 容器在运⾏期间,动态地将某种依赖关系注⼊到对象之中。所以,依赖注⼊(DI)和控制反转(IoC)是从不同的⻆度的描述的同⼀件事情,就是指通过引⼊ IoC 容器,利⽤依赖关系注⼊的⽅式,实现对象之间的解耦.
当然我们还是说人话来解释一下:
将依赖的某个对象注入到当前类当中的这个行为就叫做依赖注入。
总结
ioC是“目标”也是一种思想,而目标和思想只是一种指导原则,最终还是要有可行的落地方案,而DI就属于具体的实现。
比如说我今天心情比较好,吃一顿好的犒劳犒劳自己,那么“吃一顿好的”是思想和目标(是loC) ,但最后我是吃海底捞还是杨国福?这就是具体的实现,就是 DI,