目录
Spring 是什么?
我们通过百度百科可以知道:
Spring 指的是 Spring Framework(Spring 框架),用于构建企业级Java应用程序。它提供了一种全面的编程和配置模型,用于开发现代化的、灵活的、可扩展的Java应用程序。我们可以用一句话来总结: Spring 是包含了众多工具方法的 IoC 容器
1.什么是容器?
容器是⽤来容纳某种物品的(基本)装置。 ——来⾃:百度百科对比到前面的知识点, 目前接触到的容器有
- List / Map --> 数据存储容器
- Tomcat --> Web 容器
我们说到Spring是一个包含了众多工具方法的Ioc容器,那Ioc又是什么呢?
2.什么是Ioc容器
IoC = Inversion of Control 翻译成中⽂是“控制反转”的意思,也就是说 Spring 是⼀个“控制反转”的容器
IOC就是对生命周期的托管,控制反转
当我们使用A类引用B类,B类引用C类,C类引用D类时
在A类引用B类时直接new它时直接new的话就有一个问题,当B类的构造方法发生变化的时候,整个调用链都要发生变化
当我们不在new它的时候,而是把对象传入进来
这个时候虽然我的整个调用链还是A类引用B类,B类引用C类,C类引用D类
但是当我的D类发生变化的时候,我的整个调用链C类,B类,A类是不需要任何的代码的跟改的,从而降低了代码的耦合性这就是IOC,这就是它的优势和特点
即("控制反转":之前的控制权是在我身上,现在反转了,也就是我把控制权交出去了,交给框架了,下次我再要用X的时候,直接告诉框架,我要用X,而现在的X的生命周期和我没啥关系)
我们也可以说:Spring就是个容器,用来帮忙管理对象的生命周期的
Spring IoC 容器最核心的功能:
- 将 Bean (对象) 存储到 Spring (容器) 中
- 将 Bean (对象) 从 Spring (容器) 中取出
Spring 是⼀个 IoC 容器,说的是对象的创建和销毁的权利都交给 Spring 来管理了,它本身⼜具备了存 储对象和获取对象的能力。
3.DI概念说明
说到IoC 就要提到 "DI", DI 是 Dependency Injection 的缩写,翻译过来就是 "依赖注入" 的意思
依赖:比如说A类中,需要用到B类,那就说A依赖B
注入:将一个东西拿过来用就叫做注入
合起来"依赖注入"的意思就是: 在 IoC 容器在运行期间,动态的将某种依赖关系注入到对象中.
依赖注入的角度就是,通过引用 IoC 容器,利用依赖关系注入的方式,实现对象之间的解耦,所以DI 是一种实现
4. 面试:IoC 和 DI 有什么区别?
从广义上来讲:IOC和DI是同一个东西的(IOC=DI),从不同的维度来描述同一个问题的
但是具体来说:IOC是一个设计思路, DI是一个具体的实现技术,两者从狭义上来说是不同的
比如说我今天心情比较好,吃一顿好的犒劳犒劳自己,那么“吃一顿好的”是思想和目标(是loC),但最后我是吃海底捞还是杨国福?这就是具体的实现,就是 DI。
IoC 是一种思想: 控制反转
DI 是一种实现 : 依赖注入