目录
一、Spring 是什么?
1、认识 loC
2、理解 Spring loC
3、DI 概念说明
一、Spring 是什么?
我们通常所说的 Spring 指的是 Spring Framework(Spring 框架),它是⼀个开源框架,有着活跃而庞大的社区,这就是它之所以能长久不衰的原因。Spring 支持广泛的应用场景,它可以让 Java 企业级的应用程序开发起来更简单。
用一句话概括:Spring 是包含了众多工具方法的 IoC 容器
1、认识 loC
什么是 IoC ?
IoC = Inversion of Control 中文是 “控制反转” 的意思,也就是说,Spring 是一个 “控制反转” 的容器,那么怎么理解这句话呢?
我们先来看几个例子:
如果想要写一辆 车 的程序,那么大致的过程是这样的:
传统开发中是存在一个耦合性的问题的:
在传统开发中,当我们改变其中一个参数的时候,调用链中参数也会受到影响也要相应的进行改变,这就会导致假设一个调用链非常的长,当其底层发生了改变的时候,其它的参数也要进行改变,就会非常麻烦
因此,我们需要对代码进行解耦合
改进后的代码是一个低耦合的代码,当 Tire 修改之后,整个调用链不需要再进行任何的修改
两个代码中,对象创建的顺序也发生了变化:
现在,A 类 引用 B 类,B 类 引用 C 类,C 类 引用 D 类
之前的做法是在 A 类 引用 B 类的时候直接 new ,此时就会有一个问题:当它的构造方法发生变化的时候,整个调用链都要进行变化
有一天 ,我们不再去 new 它了,而是把当前的对象传入进来,此时虽然整个调用链仍然是 A 调用 B ,B 调用 C,C 调 D ,但是当 D 发生改变的时候,整个调用链是不需要进行任何的代码的修改的,从而就解决了代码的耦合性,这就是依赖注入,也就是 loC
2、理解 Spring loC
在一开始,我们就讲:Spring 是包含了多个工具方法的 IoC 容器,这就是对Spring 最核心的总结。
既然 Spring 是一个 loC (控制反转)容器,那么它具备的最基础的两个功能就是:
1、将对象存入到容器中
2、从容器中取出对象
也就是说,Spring 最核心的功能,就是将对象存入到 Spring ,再从 Spring 中获取对象的过程
将对象存储到容器中的好处:
将对象存储在 loC 容器相当于将以后可能会用到的工具都制作好,放到仓库中,需要的时候直接取就行,用完再放回仓库,而之前所说的传统的代码中 new 对象的过程,则可以理解为需要用到工具的时候,现做一个,并且用完之后不会进行保存,直接丢弃
Spring 是一个 loC 容器,说的是对象的创建和销毁的权利都交给 Spring 来管理了,而 Spring 本身又具备了存储对象和获取对象的能力
3、DI 概念说明
DI : Dependency Injection,依赖注入
DI 也就是所谓的 “依赖注入”,所谓依赖注入,就是由 loC 容器在运行期间,动态的将某种依赖关系注入到对象中
DI:在程序运行期间,动态的将某个对象引入到当前类的(行为)机制,就叫做依赖注入
从广义上来说,IoC = DI,只不过是从不同的维度来描述同一个问题
但是从狭义上来说,二者又是不一样的,IoC 是一个设计思想,而 DI 是具体的实现技术
DI 是 IoC 实现的一种具体方法,比如我今天累了一天,想吃些什么,这样的思想就是IoC,但是我具体实现的方法,例如吃海底捞等等,就是 DI