如果作為一個整體,這些子產品為你提供了開發企業應用所需的一切。但你不必将應用完全基于Spring架構。你可以自由地挑選适合你的應用的子產品而忽略其餘的子產品。
就像你所看到的,所有的Spring子產品都是在核心容器之上建構的。容器定義了Bean是如何建立、配置和管理的——更多的Spring細節。當你配置你的應用時,你會潛在地使用這些類。但是作為一名開發者,你最可能對影響容器所提供的服務的其它子產品感興趣。這些子產品将會為你提供用于建構應用服務的架構,例如AOP和持久性。
核心容器
這是Spring架構最基礎的部分,它提供了依賴注入(Dependency Injection)特征來實作容器對Bean的管理。這裡最基本的概念是BeanFactory,它是任何Spring應用的核心。BeanFactory是工廠模式的一個實作,它使用IoC将應用配置和依賴說明從實際的應用代碼中分離出來。
應用上下文(Context)子產品
核心子產品的BeanFactory使Spring成為一個容器,而上下文子產品使它成為一個架構。這個子產品擴充了BeanFactory的概念,增加了對國際化(I18N)消息、事件傳播以及驗證的支援。
另外,這個子產品提供了許多企業服務,例如電子郵件、JNDI通路、EJB內建、遠端以及時序排程(scheduling)服務。也包括了對模版架構例如Velocity和FreeMarker內建的支援。
Spring的AOP子產品
Spring在它的AOP子產品中提供了對面向切面程式設計的豐富支援。這個子產品是在Spring應用中實作切面程式設計的基礎。為了確定Spring與其它AOP架構的互用性, Spring的AOP支援基于AOP聯盟定義的API。AOP聯盟是一個開源項目,它的目标是通過定義一組共同的接口群組件來促進AOP的使用以及不同的AOP實作之間的互用性。通過通路他們的站點http://aopalliance. sourceforge.net,你可以找到關于AOP聯盟的更多内容。
Spring的AOP子產品也将中繼資料程式設計引入了Spring。使用Spring的中繼資料支援,你可以為你的源代碼增加注釋,訓示Spring在何處以及如何應用切面函數。
JDBC抽象和DAO子產品
使用JDBC經常導緻大量的重複代碼,取得連接配接、建立語句、處理結果集,然後關閉連接配接。Spring的JDBC和DAO子產品抽取了這些重複代碼,是以你可以保持你的資料庫通路代碼幹淨簡潔,并且可以防止因關閉資料庫資源失敗而引起的問題。
這個子產品還在幾種資料庫伺服器給出的錯誤消息之上建立了一個有意義的異常層。使你不用再試圖破譯神秘的私有的SQL錯誤消息!
另外,這個子產品還使用了Spring的AOP子產品為Spring應用中的對象提供了事務管理服務。
對象/關系映射內建子產品
對那些更喜歡使用對象/關系映射工具而不是直接使用JDBC的人,Spring提供了ORM子產品。Spring并不試圖實作它自己的ORM解決方案,而是為幾種流行的ORM架構提供了內建方案,包括Hibernate、JDO和iBATIS SQL映射。Spring的事務管理支援這些ORM架構中的每一個也包括JDBC。
Spring的Web子產品
Web上下文子產品建立于應用上下文子產品之上,提供了一個适合于Web應用的上下文。另外,這個子產品還提供了一些面向服務支援。例如:實作檔案上傳的multipart請求,它也提供了Spring和其它Web架構的內建,比如Struts、WebWork。
Spring的MVC架構
Spring為建構Web應用提供了一個功能全面的MVC架構。雖然Spring可以很容易地與其它MVC架構內建,例如Struts,但Spring的MVC架構使用IoC對控制邏輯和業務對象提供了完全的分離。
它也允許你聲明性地将請求參數綁定到你的業務對象中,此外,Spring的MVC架構還可以利用Spring的任何其它服務,例如國際化資訊與驗證。
本文轉自linzheng 51CTO部落格,原文連結:http://blog.51cto.com/linzheng/1080807