IOC?
1.什么是IOC?
即控制反转,在传统的程序设计,我们直接在对象内部通过 new 来创建对象,是程序主动去创建依赖对象;而在 Spring 中有专门的一个容器来创建和管理这些对象,并将对象依赖的其他对象注入到该对象中,这
个容器我们一般称为 IoC 容器
2.谁控制谁,控制什么
当然是Ioc容器来控制对 象的创建.
控制什么?那就是主要控制了外部资源获取(不只是对象包括比如文件等)。
3.IOC能做什么?
IoC对编程带来的最大改变不是从代码上,而是从思想上,发生了“主从换位”的变化。应用程序原本是老大,要获取什么资源都是主动出击,但是在IoC/DI思想中,应用程序就变成被动的了,被动的等待IoC容器来创建并注入它所需要的资源了。
DI
什么是DI?
也就是依赖注入,依赖注入是指组件之间的依赖关系由容器在运行期决定,形象的说,即由容器动态的将某个依赖关系注入到组件之中。
●谁依赖于谁:当然是应用程序依赖于IoC容器;
●为什么需要依赖:应用程序需要IoC容器来提供对象需要的外部资源;
●谁注入谁:很明显是IoC容器注入应用程序某个对象,应用程序依赖的对象;
●注入了什么:就是注入某个对象所需要的外部资源(包括对象、资源、常量数据)。
IOC和DI有什么关系
宏观上说两个是一样的,DI是IOC的具体功能的实现。而IOC则是DI发挥的平台和空间。
SpringIOC源码的三个关键步骤
定位:定位配置文件和扫描相关的注解。
加载:将配置信息载入到内存中
注册:根据载入的信息,将对象初始化到IOC容器。
最后都会保存在BeanDefinition里面Map