存储的东西就是一个容器。
IOC 是一个容器,是一个具有依赖注入功能的容器
我们要的对象就存在IOC这个容器里面。
IOC容器也就是Spring容器
spring三大核心技术:AOP(切面编程)、 IOC(控制反转)、 DI(依赖注入)
Spring中IOC容器的主要表现形式是BeanFactory(父类,功能低级点,算低级容器)和ApplicationContext(子类,功能高级点,算高级容器)这两个接口。这两个接口的具体实现类就可以看成是IOC容器在Spring中的具体体现
spring 的 IOC 负责对象的实例化、对象的初始化、对象和对象之间依赖关系配置、对象的销毁、对外提供对象的查找,对象的整个生命周期都是由容器来控制的。这个 IOC 是一个具有依赖注入功能的 容器。
我们需要的对象都是由 IOC (控制反转)容器进行创建管理的,不需要我们手动去new对象出来,由IOC容器帮我们组装好,我们需要某个对象的时候就去IOC容器里面拿就行了。
我们把创建对象的控制权交给 IOC 容器,那么我们也需要给IOC一个创建对象的配置清单(我们需要的对象及该对象的依赖关系,这个配置支持 xml 格式和 java注解方式),IOC才能帮我们创建我们想要的对象。
当项目启动的时候,这个IOC 容器(也就是Spring 容器)就会去加载这些配置文件,然后将我们要的对象组装好以供外部访问者使用。
IOC 控制反转
DI 依赖注入
IOC就是容器,DI 就是注入这一行为,那么DI 确实就是 IOC 的具体功能的实现。而 IOC 则是 DI 发挥的平台和空间。所以说。IOC 和 DI 即是相辅相成的拍档。他们都是为了实现解耦而服务的
1、什么是控制,控制的是什么?
是bean的创建、管理的权利,控制bean的整个生命周期
2、什么是反转,反转了什么?
把原本我们自己主动创建管理对象的权利反转给了spring容器(IOC 容器)去创建、管理。这个就是反转。
3、什么是依赖,依赖了什么?
程序运行需要依赖外部的资源叫依赖
依赖的就是—程序内对象所需要的数据、资源,
4、什么是注入,注入了什么?
配置文件把资源从外部注入到内部,容器(IOC)加载了外部的文件、对象、数据,然后把这些资源注入给程序内的对象,维护了程序内外对象之间的依赖关系。
所以说控制反转就是通过依赖注入实现的。
IOC是设计思想,DI是具体的实现方式
IOC是理论,DI是实践
IOC也可以通过其他方式来实现,而DI只是Spring的选择。
IOC的作用就是解耦
它把对象之间的依赖关系转成用配置文件来管理,由spring Ioc Container 来管理
IOC充当对象的容器,是管理对象生命周期的框架。负责实例化、解析引用并销毁。
对象的实例化、对象的初始化、对象和对象之间依赖关系配置、对象的销毁、对外提供对象的查找,管理对象的整个生命周期
控制反转是一种思想、思路。就是把我们创建对象的权利交给IOC这个容器管理
啰嗦三连加强记忆。
bean 是一个普通的java对象。
由spring容器管理的对象统称为Bean对象。
只有由spring容器管理的对象才叫bean。
Bean就是普通的java对象,和我们自己new的对象实质上没有区别。
把对象叫成bean只因为这个对象不是我们主动创建的,而是由spring去创建和管理的对象才叫bean
要spring容器(IOC容器)帮我们创建,我们需要在配置文件中告诉spring容器需要创建哪些bean对象,所以需要现在配置文件中定义好需要创建的bean对象,这些配置统称为bean定义配置元数据信息,spring容器通过读取这些bean配置元数据信息来构建和组装我们需要的对象。
Spring IOC 到底是什么?
容器的基本使用及原理