【Spring】——IOC原理

1、原理:

(依赖倒置 Dependency InversionPrinciple

对象与对象之间的依赖关系有具体对象来完成,会导致代码的糕点耦合和可测试性降低。IOC是实现依赖控制反转的载体。

 

2、应用场景

应用管理依赖关系时,通过IOC容器控制进行反转。

 

3、设计与实现

 

BeanDefinition

 

是对依赖反转模式中管理的对象依赖关系的数据抽象,依赖反转功能都是围绕这个BeanDefinition来完成的。它就像桶里的水。

 

容器的具体体现:BeanFactoryApplicationContext

 

第一条设计主线:

【Spring】——IOC原理_第1张图片

 

 

第二条设计主线:

 

主要是添加了许多对高级容器的支持

 

【Spring】——IOC原理_第2张图片

IOC容器的初始化过程

 

IOC的初始化是由refresh()方法来启动的。

 

启动包括:BeanDefinition的定位、载入、注册。

 

定位

 

ResourcesLoader通过统一的Resources接口来完成的,类似于先把水找到一样。

 

载入

 

将水装入到水桶里,BeanDefinition装入到Ioc容器中。


注册


   这个过程是通过调用BeanDefinitionRegistry接口的实现来完成的。这个注册过程把载入过程中解析得到的BeanDefinition向IoC容器进行注册。通过分析,我们可以看到,在IoC容器内部将BeanDefinition注入到一个HashMap中去,IoC容器就是通过这个HashMap来持有这些BeanDefinition数据的。

你可能感兴趣的:(java)