IoC反轉控制進一步認識

1、 技術概覽數據庫

輕量級的企業應用開發愈來愈受到廣大Java應用開發者的追捧,而Spring框架又是輕量級容器的傑出表明。因爲Spring的使用日漸普遍,所以已有許多應用服務器(WAS)的應用採用了Spring框架。本書先介紹Spring的依賴注入、面向切面編程、Spring抽象JDBC框架,而後介紹三大框架的整合。編程

Spring框架的核心思想咱們能夠用兩個字來描述,那就是「解耦」。應用程序的各個部分之間(包括代碼內部和代碼與平臺之間)儘可能造成一種鬆耦合的結構,使得應用程序有更多的靈活性。應用內部的解耦主要經過一種稱爲控制反轉(IOC)的技術來實現。控制反轉的基本思想就是原本由應用程序自己來主動控制的調用等邏輯轉變成由外部配置文件來被動控制。因爲控制反轉的概念相對比較普遍,不少應用服務器實際上也實現了不一樣程度的控制反轉技術,只是這些應用服務器對應用程序的侵入性太強。所以Martin Fowler專門寫了一篇文章討論控制反轉這個概念,並提出一個描述更爲準確的概念,叫依賴注入(Dependency Injection)。設計模式

Spring框架中的各個部分都充分使用了這種依賴注入的技術實現,從而給應用以最大的靈活度。實際上,這種依賴注入的參數化應用控制並非Spring的獨創,好比IBM的多渠道應用整合平臺(Branch Transformation Toolkit,BTT)很早就採用了這種外部參數化控制的技術。BTT中的「對象工廠」與Spring框架中的BeanFactory也有着殊途同歸之妙。服務器

Spring框架另一個比較重要的技術是它對於面向切面的編程(AOP)的支持。隨着應用複雜度的逐漸上升和對應用靈活性要求的提升,IT邏輯和業務邏輯儘可能分離的呼聲也愈來愈高。AOP技術做爲實現這種分離的一種比較好的途徑而愈來愈受到你們的重視。Spring提供的是一種動態AOP實現,也即經過代理模式動態地在目標對象的方法先後插入相應的處理代碼。應用程序與底層應用服務器平臺的解耦也能夠藉助AOP技術來實現。Spring內置的AOP支持是一種錦上添花的功能。它使得一些原本必須由容器支持的功能,好比事務控制能夠脫離開容器運行,從而達到「瘦身」的目的。這也是爲何Spring框架常被人成爲輕量級容器的一個緣由。架構

JDBC基於SQL,不要求咱們掌握其餘框架的查詢語言,簡單易學,所以學習成本低。另外,在使用 JDBC 時,能夠更細緻地調整數據訪問的性能。JDBC 還容許咱們利用數據庫的特有功能,而其餘框架可能不鼓勵甚至禁止使用它們。 可是JDBC並不完美,不管是執行查詢,更新,插入仍是刪除操做, JDBC都要求咱們正確地管理鏈接和語句,還要處理可能拋出的SQLException,及時的釋放資源。這顯然形成了大量的代碼重複。這彷佛印證了 Pareto 法則:只有 20% 的代碼是查詢操做所必需的,而80%代碼是樣板代碼。Spring抽象JDBC框架基於模板設計模式,將上述必須都又和核心業務無關的樣板代碼封裝到模板方法中,以簡化開發,讓編程人員能夠將精力集中在覈心業務之上。框架

Spring框架能夠與許多已有的框架技術結合使用。J2EE技術應用的一個重要特色是相關的開源社區很是活躍。Web應用的不一樣層次都有很是多優秀的開源框架存在。好比Web層的Struts,ORM映射層的Hibernate等。Spring框架並不從新發明輪子,它的出現不是爲了替代這些已有的框架。相反,Spring框架在設計上能夠獨立構建應用或者結合已有的框架一塊兒構建應用。另一個值得指出的地方是Spring框架的幾大模塊之間相互耦合度很小,所以Spring框架的使用能夠根據實際須要選其部分模塊按部就班的使用,而非必須通通照搬。工具

 


參考博客:http://blog.csdn.net/zhangchen124/article/details/78005056性能

本章簡介學習

Spring是用於簡化企業應用程序開發過程的開源框架,屬於輕量級的控制反向 (IOC,即 Inversion of control)和麪向切面編程 (AOP,即 Aspect Oriented  Programming)的容器框架。本章以 Spring的起源及背景爲起點,介紹Spring的工做原理。而後以組裝計算機爲貫穿案例介紹Spring Bean的封裝機制、Spring對Bean的管理,分別使用設值注入、構造注入、自動注入等方式組裝Bean。最後經過一個示例介紹集合屬性的使用。.net

 

Spring 是用於簡化企業應用程序開發過程的開源框架,屬於輕量級的控制反轉 (IOC)和麪向切面編程 (AOP,即 Aspect Oriented Programming)的容器框架,解決了J2EE開發中許多常見的問題。咱們須要瞭解一下Spring中的一些名詞:

(1)輕量級:以所佔大小及系統開銷分析,Spring屬於輕量級。整個Spring框架能夠打包爲 1M左右的JAR包,且系統開銷較小。同時,Spring爲非侵入式,若系統基於Spring開發,其所含的對象通常不依賴於Spring的類。

(2)IOC: IOC使對象被動接受依賴類,而並不是主動獲取。也就是說,告訴 Spring「你」是什麼,「你」須要什麼對象,而後Spring會在系統運行到適當的時候,把「你」要的對象主動給「你」,同時也把「你」交給其餘須要「你」的對象。全部的類的建立、銷燬都由Spring來控制,控制對象生存週期的再也不是引用它的對象,而是 Spring。對於某個具體的對象而言,使用 Spring 以前是它控制其餘對象,如今是全部對象都被 Spring 控制,因此叫控制反轉。在系統運行中,動態的向某個對象提供它所須要的其餘對象,這一點是經過DI(依賴注入)實現的。

(3)AOP:面向切面編程(也叫面向方面編程),關注系統的橫向切面。通俗點說就是把代碼「切開」,而後在須要的位置上動態加入公共代碼。好比日誌或者事務支持。

(4)容器:Spring 是一個包含且管理系統對象生命週期和配置的容器,在使用 Spring 應用開發的時候,幾乎全部的 JavaBean 對象都須要 Spring 來「盛放」。Spring 容器的做用是管理對象。

(5)Spring框架:Spring可以經過簡單的組件組合爲複雜的系統。Spring框架爲分層架構,由7個定義良好的模塊組成,各模塊構建於核心容器之上,核心容器定義了建立、配置及管理Bean的方式

 

(1)Spring Core:核心容器,用於提供 Spring框架的基本功能,其主要組件爲 BeanFactory,是工廠模式的實現。BeanFactory使用反向控制(IOC)模式將應用程序的配置及依賴性規範與實際應用程序代碼分開。

(2)Spring Context:核心模塊的BeanFactory使Spring成爲容器,上下文 (Context)模塊使其成爲框架。此模塊擴展了BeanFactory的概念,增長了對國際化(I18N,即Internationalization)消息、事件的傳播以及驗證的支持;同時,此模塊提供諸多企業服務,如電子郵件、JNDI訪問、EJB集成、遠程以及時序調度(Scheduling)服務,支持對模版框架 (如Velocity、FreeMarker)的集成。

(3)Spring AOP:經過配置管理特性,Spring AOP模塊將面向切面編程功能集成至框架中,使Spring框架管理的任何對象均支持AOP。Spring AOP模塊向基於 Spring的應用程序中的對象提供事務管理服務。此模塊無需依賴於EJB組件,可使用 Spring AOP將聲明式事務管理集成至應用程序中。

(4)Spring DAO:JDBC DAO抽象層提供了意義重大的異常層次結構,簡化了錯誤處理過程並極大地減小了須要編寫的異常代碼 (如打開或關閉鏈接),運用此結構能夠管理異常、處理不一樣數據庫供應商拋出的錯誤消息。Spring DAO的面向JDBC異常聽從通用的 DAO異常層次結構。

(5)Spring ORM:Spring框架中插入了若干ORM框架,提供ORM的對象關係工具,包括JDO、Hibernate以及iBatis SQL Map,都聽從Spring的通用事務及DAO異常層次結構。

(6)Spring Web:Web上下文模塊創建在應用程序上下文模塊之上,向基於Web 的應用程序提

供上下文,於是Spring框架支持與Struts集成。同時,Web模塊簡化了請求的處理過程以及將請求參數綁定至域對象的工做。

(7)Spring MVC:MVC 框架是一個全功能的構建 Web 應用程序的 MVC 實現。經過策略接口,MVC框架變爲高度可配置,它容納了大量視圖技術,包括JSP、Velocity、Tiles、iText及POI等。

相關文章
相關標籤/搜索