天天看點

Spring的控制反轉和依賴注入

 Struts與Hibernate可以做什麼事?   Struts,     Mvc中控制層解決方案     可以進行請求資料自動封裝、類型轉換、檔案上傳、效驗… Hibernate,   持久層的解決方案;   可以做到,   把對象儲存到資料庫,   從資料庫中取出的是對象。 傳統的開發模式   基于mvc模式進行項目開發;   基于mvc的項目架構結構:   Entity / dao / service / action

為什麼引入Spring:

 思考:     1. 對象建立建立能否寫死?     2. 對象建立細節         對象數量             action  多個   【維護成員變量】             service 一個   【不需要維護公共變量】             dao     一個   【不需要維護公共變量】         建立時間             action    通路時候建立             service   啟動時候建立             dao       啟動時候建立     3. 對象的依賴關系         action 依賴 service         service依賴 dao ======================================================= 總結: spring就是解決上面的問題的! 簡單來說,就是處理對象的建立的、以及對象的依賴關系!

1:架構設計:

  1.1:侵入式設計:引入了架構,對現有的類的結構有影響,即需要實作或者繼承某些特定類

      例如:Struts2架構

  1.2:非侵入式設計:引入了架構,對現有的類結構沒有影響

      例如:Hibernate架構,Spring架構

 2:Spring架構

  Spring概述:可以解決對象建立以及對象之間依賴關系的一種架構。且可以很好的和其他架構一起使用,

     如Spring和Hibernate,Spring和Struts2,其實通俗點講Spring就是起到一種整合的作用,

     如是一座橋梁,連接配接了Hibernate和Struts2;

  2.1:控制反轉(Inversion of Confrol):

      對象的建立交給外部容器完成,這個就叫做控制反轉

  2.2:依賴注入(dependency injection):

     處理對象的依賴關系

  2.3:控制反轉和依賴注入的差別:

     控制反轉:解決對象建立的問題[對象建立交給别人即ioc容器]; 

     依賴注入:在建立完對象後,對象的關系的處理就是依賴注入[通過set方法依賴注入];

  2.4:AOP面向切面程式設計

    面向切面程式設計:切面,簡單的說來可以了解為一個類,由很多重複代碼形成的類。

    例如:事務,日志,權限。

3:Spring提供了一站式解決方案:

  3.1:SpringCore:

      Spring的核心功能,IoC容器,解決對象建立以及依賴關系

  3.2:SpringWeb:

     Spring對web子產品的支援:

        (1)可以與struts2整合,讓struts2的action的建立交給Spring

           (2)Spring mvc模式 

  3.3:SpringDao:

      Spring對jdbc操作的支援[JdbcTemplate模闆工具類]

    3.4:SpringORM:

     Spring對orm的支援:

      (1):既可以與Hibernate整合

      (2):也可以使用Spring對Hibernate操作的封裝

  3.5:SpringAOP:

      面向切面程式設計

  3.6:SpringEE:

    Spring對JavaEE其他子產品的支援  

 架構啊,東西多而雜,耐着性子慢慢消化~~~