Spring之控制反轉(IoC)_SPRING

來源:互聯網
上載者:User

一、IoC概念
IoC(Inversion of Control):中文譯為控制反轉。
IOC的基本概念是:不建立對象,但是描述建立它們的方式。在代碼中不直接與對象和服務串連,但在設定檔中描述哪一個組件需要哪一項服務。容器負責將這些聯絡在一起。
  其原理是基於OO設計原則的The Hollywood Principle:Don't call us, we'll call you(別找我,我會來找你的)。也就是說,所有的組件都是被動的(Passive),所有的組件初始化和調用都由容器負責。組件處在一個容器當中,由容器負責管理。
  簡單的來講,就是由容器控製程序之間的關係,而非傳統實現中,由程式碼直接操控。這也就是所謂“控制反轉”的概念所在:控制權由應用代碼中轉到了外部容器,控制權的轉移,是所謂反轉。

 

二、Spring IoC
         Spring IoC容器實現了IoC設計模式,對外提供兩個介面實現對Spring IoC容器的訪問:
         1. BeanFactory:位於org.springframework.beans.factory包中。藉助於設定檔實現對JavaBean的配置和管理。主要應用於開發Java應用。
         2. ApplicationContext:位於org.springframework.context包中。繼承於BeanFactory,增加了IoC整合、處理訊息資源、事件等功能。主要用於開發J2EE應用,是Spring推薦使用的介面。

         要獲得appcontext.xml中定義的JavaBean,應用代碼只需要調用BeanFactory的getBean方法即可。
       
         Bean的生命週期
         IoC容器定義了Spring設定檔中JavaBean應遵循的規則,即Bean定義(BeanDefinition)。任何處於IoC容器控制下的JavaBean的生命週期都存在4個階段:
         1.執行個體化JavaBean。
         2.JavaBean執行個體的初始化,即通過IoC注入其依賴性。這一階段將完成JavaBean執行個體的初始化。
         3.基於Spring應用對JavaBean執行個體的使用。
         4.Ioc容器銷毀JavaBean執行個體。

        

         Bean的建立
         聲明方式:<bean name="fileHelloWorld"  class="testspring.sample.HelloWorld"/>
        可用參數:
              factory-method:聲明建立JavaBean的Factory 方法。
              factory-bean:聲明工廠類。
              <ref>:引用其它資源(bean執行個體)。
        初始化JavaBean
        1.可以使用autowire屬性,使Spring自動將目標JavaBean需要注入的JavaBean找到並注入進來。
        2.使用dependency-check屬性,保證各個Spring設定檔中各個JavaBean之間的相互關係。
        3.藉助setter方法,將JavaBean的屬性值注入進來。這些屬性值可以使Java原型、物件類型、其它JavaBean、null等。
        4.如果JavaBean實現了org.springframework.beans.factory.BeanFactoryAware介面,則還需要調用setBeanFactory方法。
        5.Spring架構提供了若干介面,供開發人員改變更配置置在BeanFactory中JavaBean的行為時使用。比如InitializingBean介面。BeanFactory初始化JavaBean時,會調用實現了InitializingBean介面的JavaBean中的aferPropertiesSet()方法。
        6.通過在<bean>元素中包含init-method屬效能夠達到同InitializingBean一樣的目的。即初始化時會自動調用init-method中定義的方法。
        注意:如果5和6兩者同時使用,Spring首先執行5中的aferPropertiesSet()方法,然後執行init-method中定義的方法。

 

        使用JavaBean
         一旦Spring建立並初始化JavaBean執行個體後,應用就可以使用JavaBean執行個體了。

 

        銷毀JavaBean
         一旦將基於Spring的(Web)應用停止,Spring架構將調用那些JavaBean執行個體中存在的生命週期方法,比如實現了DisposableBean介面的JavaBean,或者在Spring設定檔中指定了destroy-method蘇醒的JavaBean。
         注意:
          1.上述內容只適合於通過“singleton”方式建立的JavaBean執行個體。對於以“prototype”方式建立的JavaBean執行個體,Spring並不能夠控制其生命週期。
          2.JavaBean建立時間。對於BeanFactory而言,在使用者調用getBean()方法時建立JavaBean執行個體。而對於ApplicationContext而言,一旦ContextLoaderServlet或ContextLoaderListener初始化成功,所有JavaBean執行個體都將會被建立。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.