天天看點

【Spring】——IOC原理

1、原理:

(依賴倒置 Dependency InversionPrinciple)

對象與對象之間的依賴關系有具體對象來完成,會導緻代碼的糕點耦合和可測試性降低。IOC是實作依賴控制反轉的載體。

2、應用場景

應用管理依賴關系時,通過IOC容器控制進行反轉。

3、設計與實作

BeanDefinition:

是對依賴反轉模式中管理的對象依賴關系的資料抽象,依賴反轉功能都是圍繞這個BeanDefinition來完成的。它就像桶裡的水。

容器的具體展現:BeanFactory與ApplicationContext

第一條設計主線:

【Spring】——IOC原理

第二條設計主線:

主要是添加了許多對進階容器的支援

【Spring】——IOC原理

IOC容器的初始化過程

IOC的初始化是由refresh()方法來啟動的。

啟動包括:BeanDefinition的定位、載入、注冊。

定位

ResourcesLoader通過統一的Resources接口來完成的,類似于先把水找到一樣。

載入

将水裝入到水桶裡,BeanDefinition裝入到Ioc容器中。

注冊

   這個過程是通過調用BeanDefinitionRegistry接口的實作來完成的。這個注冊過程把載入過程中解析得到的BeanDefinition向IoC容器進行注冊。通過分析,我們可以看到,在IoC容器内部将BeanDefinition注入到一個HashMap中去,IoC容器就是通過這個HashMap來持有這些BeanDefinition資料的。