SpringIOC 也是面试的高频考点了。这一篇文章带初识SpringIOC,让你心里有个整体的脉络。
SpringIOC的IOC是什么?
IOC 又叫控制反转,控制反转,就是把创建和管理bean的权利移交给第三方,这个第三方就是容器。IOC的核心是容器,容器管理着bean的生命周期,负责bean的依赖注入。
简单来说,我们在写项目的时候,经常会创建对象,那springIOC就免去了我们创建对象这个步骤,我们只用使用,不用创建,销毁。
那你说说bean是什么?
bean就是Object,无论是控制反转还是依赖注入,他的主体都是Object,bean就是包装过的Object,由第三方包装的。
那你知道SpringIOC 是如何设计容器的吗?
SpringIOC 设计容器是通过ApplicationContext。它的父类是BeanFactory
BeanFactory,是一个低级容器,类似于hashMap,key-value,只有get和put两种方法
ApplicationContext继承多个接口,被称为高级容器,它有两个具体的子类负责读取配置文件
- ClassPathXmlApplictationnContext:负责读取classPath下的配置文件
- FileSystemPathApplicationContext:负责读取本地文件,不常用
我们发现ClassPathXMLApplicationContext不是直接继承ApplicationContext,中间有很多其他的继承,每层都是对上一层的补充。
你知道IOC是通过什么方法创建对象的吗?
是通过set()方法。具体的可以实践,把set()方法改个名字,做相同的功能,看IOC是否能成功创建对象
你知道什么是DI吗?
DI就是依赖注入,控制反转就是通过DI实现的。这句话怎么理解呢?
控制反转是一种思想,DI是这个思想的具体实现。
依赖注入:依赖的是程序外部的资源,因为程序运行需要依赖外部资源,给程序内部的对象提供数据、资源。 注入的是外部的资源,配置文件把外部资源注入到内部,容器加载外部的文件,对象,数据注入到内部对象
Spring为什么要用IOC这个思想呢
主要是解耦。把各个对象之间的依赖关系,用配置文件映射起来,交由容器管理。