spring框架Ioc学习

Ioc(inversion of control):控制反转

理解:
(1)在Ioc没有出现之前,如果对象a需要依赖对象b,那么在a初始化或运行到某一个点的时候,需要去创建或者调用已经创建的对象b.不管是创建还是直接调用,控制权都在自己手里.
(2)Ioc出现之后,如果对象a需要依赖对象b,这是会有一个容器来管理这种需求,将对象b注入到对象a中,这样一个容器我们称之为Ioc容器.
综合(1)(2)我们可以理解到对象a依赖对象b从主动控制变成了被动行为,也就是控制被反转了.

DI(dependency injection):依赖注入

DI和Ioc其实是从两个不同的角度去描述同一件事情.
Ioc强调的是一种思想,DI注重的是手段,一种实践Ioc的方式:就是利用Ioc容器在运行期间,动态的将某种依赖关系注入到对象当中.

Ioc原理分析

spring Ioc容器执行的流程如下:
(1)资源定位,通过ResourceLoader来完成资源的定位
(2)容器通过 BeanDefinitionReader来完成定义信息的解析
(3)解析后的bean信息通过BeanDefinition对象来表示
(4)在Ioc中注册BeanDefinition,注册过程就是在 IOC 容器内部维护的一个HashMap 来保存得到的 BeanDefinition 的过程
这里写图片描述
源码解析推荐看该博客,针对IOC有一个系列的源码解析
http://blog.csdn.net/linuu/article/details/50829981

猜你喜欢

转载自blog.csdn.net/wuzhimin15181111/article/details/78573474