Spring 源碼學習 1 IOC理論

Ioc名詞解釋

  • Ioc全稱 Inversion of Control,翻譯爲 「控制反轉」,它還有一個別名爲 DI(Dependency Injection),即依賴注入。
  • 所謂 IoC ,就是由 Spring IoC 容器來負責對象的生命週期和對象之間的關係

如何理解「控制反轉」

  • 誰控制誰:在傳統的開發模式下,咱們都是採用直接 new 一個對象的方式來建立對象,也就是說你依賴的對象直接由你本身控制,可是有了 IoC 容器後,則直接由 IoC 容器來控制。因此「誰控制誰」,固然是 IoC 容器控制對象
  • 控制什麼:控制對象。
  • 爲什麼是反轉:沒有 IoC 的時候咱們都是在本身對象中主動去建立被依賴的對象,這是正轉。可是有了 IoC 後,所依賴的對象直接由 IoC 容器建立後注入到被注入的對象中,依賴的對象由原來的主動獲取變成被動接受,因此是反轉。
  • 哪些方面反轉了:所依賴對象的獲取被反轉了。

1 注入方式

  • 構造器注入
YoungMan(BeautifulGirl beautifulGirl) {
    this.beautifulGirl = beautifulGirl;
}
複製代碼
  • setter 方法注入
public class YoungMan {

    private BeautifulGirl beautifulGirl;

    public void setBeautifulGirl(BeautifulGirl beautifulGirl) {
        this.beautifulGirl = beautifulGirl;
    }

}
複製代碼

2 各個組件

圖片摘自( singleant.iteye.com/blog/117735…)

  • Resource 體系. org.springframework.core.io.Resource,對資源的抽象。它的每個實現類都表明了一種資源的訪問策略,如 ClassPathResource、URLResource、FileSystemResource 等。 spring

  • ResourceLoader 體系. 有了資源,就應該有資源加載,Spring 利用 org.springframework.core.io.ResourceLoader 來進行統一資源加載 bash

  • BeanFactory 體系 org.springframework.beans.factory.BeanFactory,是一個很是純粹的 bean 容器,它是 IoC 必備的數據結構,其中 BeanDefinition 是它的基本結構。BeanFactory 內部維護着一個BeanDefinition map ,並可根據 BeanDefinition 的描述進行 bean 的建立和管理 數據結構

  • BeanDefinition 體系 org.springframework.beans.factory.config.BeanDefinition ,用來描述 Spring 中的 Bean 對象 ui

  • BeanDefinitionReader 體系 org.springframework.beans.factory.support.BeanDefinitionReader 的做用是讀取 Spring 的配置文件的內容,並將其轉換成 Ioc 容器內部的數據結構 :BeanDefinition 。 this

  • ApplicationContext 體系 org.springframework.context.ApplicationContext ,這個就是大名鼎鼎的 Spring 容器,它叫作應用上下文,與咱們應用息息相關。它繼承 BeanFactory ,因此它是 BeanFactory 的擴展升級版,若是BeanFactory 是屌絲的話,那麼 ApplicationContext 則是名副其實的高富帥。因爲 ApplicationContext 的結構就決定了它與 BeanFactory 的不一樣,其主要區別有:spa

    • 繼承 org.springframework.context.MessageSource 接口,提供國際化的標準訪問策略。
    • 繼承 org.springframework.context.ApplicationEventPublisher 接口,提供強大的事件機制。
    • 擴展 ResourceLoader ,能夠用來加載多種 Resource ,能夠靈活訪問不一樣的資源。
    • 對 Web 應用的支持。

注:本文摘自芋道源碼 博客翻譯

相關文章
相關標籤/搜索