1、原理:
(依賴倒置 Dependency InversionPrinciple)
對象與對象之間的依賴關系有具體對象來完成,會導緻代碼的糕點耦合和可測試性降低。IOC是實作依賴控制反轉的載體。
2、應用場景
應用管理依賴關系時,通過IOC容器控制進行反轉。
3、設計與實作
BeanDefinition:
是對依賴反轉模式中管理的對象依賴關系的資料抽象,依賴反轉功能都是圍繞這個BeanDefinition來完成的。它就像桶裡的水。
容器的具體展現:BeanFactory與ApplicationContext
第一條設計主線:
第二條設計主線:
主要是添加了許多對進階容器的支援
IOC容器的初始化過程
IOC的初始化是由refresh()方法來啟動的。
啟動包括:BeanDefinition的定位、載入、注冊。
定位
ResourcesLoader通過統一的Resources接口來完成的,類似于先把水找到一樣。
載入
将水裝入到水桶裡,BeanDefinition裝入到Ioc容器中。
注冊
這個過程是通過調用BeanDefinitionRegistry接口的實作來完成的。這個注冊過程把載入過程中解析得到的BeanDefinition向IoC容器進行注冊。通過分析,我們可以看到,在IoC容器内部将BeanDefinition注入到一個HashMap中去,IoC容器就是通過這個HashMap來持有這些BeanDefinition資料的。