spring:spring 的IOC 容器

IOC容器从字面上形象地可以知道,它是一个容器,装东西的,可以想像一个桶。
IOC容器这个桶是装什么的呢,它是装我们开发的系统中使用到的对象的。
首先可以如上面那么简单理解。
只说IOC容器那太抽象了,对应我们的spring 中是什么呢。我们在 spring 中经常碰到的 两个接口 BeanFactory 和 ApplicationContext 就可以看作是具体的IOC容器。
其中 BeanFactory 是所有容器的始祖 ,他是IOC容器规范设计的接口类 ,其他IOC容器都是实现这个接口或间接实现这个接口的。
由于有很多类都实现或间接实现了这个容器始祖,但它们实现的方式或有些地方是肯定不一样的,这也导致了IOC容器会有很多种,就像各式各样的桶一样,但他们的作用是一样的,都装水,这一点规范
是没变的。
我们见过的比如 FileSystemXmlApplicationContext 、XmlWebApplicationContext等。

容器内部有什么呢?
容器中主要是管理应用中的各种对象以及它们的依赖关系。那么对象长得各种各样肯定是要规划起来的。要Spring 中我们对 Bean 也进行了抽象 ,叫 BeanDefinition 。这个家伙 就是对依赖
反转模式中管理的对象依赖关系的数据抽象,也是容器实现依赖反转功能的核心数据结构。依赖反转功能都是围绕对这个对象的处理上完成的。由此我们可以知道 IOC容器中装的东西就是
BeanDefinition 

IOC容器的工作原理是什么呢,可以总结为以下四步。
1.创建IOC 配置文件的抽象资源,也就是找到我们Bean及相关的配置文件并读取;
2.创建BeanFactory ,这个工厂用来组装各道工序用的;
3.创建一个 BeanDefinition 的读取器,什么意思呢,就是创建一个类,这个类是用来把从1中得到的资源(文件)解析出来并装成我们需要的对象 BeanDefifnition ;
4.就是用3创建的读取器干他该干的事:解析资源,创建 BeanDefinition  。

说得更专业一点可以是三个:初始化(2、3)、载入(1)、注册(4)。

猜你喜欢

转载自blog.csdn.net/mottohlm/article/details/79067169