IoC 全稱爲 Inversion of Control
,翻譯爲 「控制反轉」數據結構
- 它還有一個別名爲 DI(
Dependency Injection
),即依賴注入
- 所謂 IOC ,就是由 Spring IOC 容器來負責對象的生命週期和對象之間的關係
IOC Service Provider 爲被注入對象提供被依賴對象也有以下幾種方式:構造方法注入、stter方法注入、接口注入ide
- 構造器注入,顧名思義就是被注入的對象經過在其構造方法中聲明依賴對象的參數列表,讓外部知道它須要哪些依賴對象
- 對於 JavaBean 對象而言,咱們通常都是經過 getter 和 setter 方法來訪問和設置對象的屬性
- 接口方式注入顯得比較霸道,由於它須要被依賴的對象實現沒必要要的接口,帶有侵入性。通常都不推薦這種方式
Resource體系spa
- 對資源的抽象,它的每個實現類都表明了一種資源的訪問策略,如ClasspathResource 、 URLResource ,FileSystemResource 等
ResourceLoader 翻譯
BeanFactory 3d
- BeanFactory 是一個很是純粹的 bean 容器,它是 IOC 必備的數據結構
- 其中 BeanDefinition 是她的基本結構
- 它內部維護着一個 BeanDefinition map
- 並可根據 BeanDefinition 的描述進行 bean 的建立和管理
- BeanFacoty 有三個直接子類
ListableBeanFactory
、HierarchicalBeanFactory
和 AutowireCapableBeanFactory
DefaultListableBeanFactory
爲最終默認實現,它實現了全部接口
Beandefinition code
- 用來描述 Spring 中的 Bean 對象
- 各個Bean 之間依賴關係
BeandefinitionReader對象
- 做用是讀取 Spring 的配置文件的內容,並將其轉換成 Ioc 容器內部的數據結構:BeanDefinition
ApplicationContextblog
- 大名鼎鼎的 Spring 容器,它叫作應用上下文
- 繼承 BeanFactory,因此它是 BeanFactory 的擴展升級版
ApplicationContext 的結構就決定了它與 BeanFactory 的不一樣,其主要區別有:繼承
- 繼承 MessageSource,提供國際化的標準訪問策略。
- 繼承 ApplicationEventPublisher ,提供強大的事件機制。
- 擴展 ResourceLoader,能夠用來加載多個 Resource,能夠靈活訪問不一樣的資源。
- 對 Web 應用的支持
IOC 容器的初始化接口
- 包括BeanDefinition的Resources 定位,載入和註冊這三個基本的過程
- 以ApplicationContext 爲例,繼承體系以下: