Spring 在起源能夠回溯到 Rod Johnson 編寫的「 Expert One-to-One J2EE Design and Development」一書 (Wrox , 2002) 。在這本書中, Rod 展現了他的 interface21 框架,他爲本身的應用編寫了這一框架。這一框架被髮布到開源世界後,組成了如今咱們所知的 Spring 框架的基礎。spring
Spring 在早期的 beta 和發佈備選版本階段進行得很迅速,第一個正式版本 1.0 在 2004 年 3 月 24 日 發佈。數據庫
官方: http://www.springframework.org編程
或許解釋清楚 Spring 技術究竟是什麼會很困難。一般, Spring 是指一個用於構造 JAVA 應用程序的輕量級框架,但這句話包含兩個有趣的地方。首先,你能夠採用 Spring 來構造任何程序,這一 Apache Struts這樣的框架不一樣,你不限定於只編寫 WEB 應用。其次,以上解釋中的「輕量級」並不意味着類數量不多,或者發行包大小很小,實際上,它指的是 Spring 哲學原理的總稱——那就是最少的侵入。 Spring 是輕量級的,意味着你只需對你的程序代碼作不多改動 ( 倘若有的話 ) ,而得到 Spring 核心帶來的好處,你也能夠在任什麼時候候選擇拋棄 Spring ,你會發現這實在很容易。注意,上面這句話只針對 Spring 核心自己——不少附加的 Spring 組件,好比數據訪問,須要與 Spring 框架有相對緊密得多的耦合關係。可是,這些耦合帶來的好處顯而易見。架構
Spring 是一個開源框架,是爲了解決企業應用程序開發複雜性而建立的。框架的主要優點之一就是其分層架構,分層架構容許您選擇使用哪個組件,同時爲 J2EE 應用程序開發提供集成的框架。框架
Spring 框架是一個分層架構,由 7 個定義良好的模塊組成。 Spring 模塊構建在覈心容器之上,核心容器定義了建立、配置和管理 bean 的方式工具
核心容器提供 Spring 框架的基本功能。核心容器的主要組件是 BeanFactory ,它是工廠模式的實現。BeanFactory 使用控制反轉 (IOC) 模式將應用程序的配置和依賴性規範與實際的應用程序代碼分開 ( 工廠方法 ) 。對象
Spring 上下文是一個配置文件,向 Spring 框架提供上下文信息。 Spring 上下文包括企業服務,例如JNDI 、 EJB 、電子郵件、國際化、校驗和調度功能。接口
經過配置管理特性, Spring AOP 模塊直接將面向方面的編程功能集成到了 Spring 框架中。因此,能夠很容易地使 Spring 框架管理的任何對象支持 AOP 。 Spring AOP 模塊爲基於 Spring 的應用程序中的對象提供了事務管理服務。經過使用 Spring AOP ,不用依賴 EJB 組件,就能夠將聲明性事務管理集成到應用程序中。事務
JDBC DAO 抽象層提供了有意義的異常層次結構,可用該結構來管理異常處理和不一樣數據庫供應商拋出的錯誤消息。異常層次結構簡化了錯誤處理,而且極大地下降了須要編寫的異常代碼數量(例如打開和關閉鏈接)。 Spring DAO 的面向 JDBC 的異常聽從通用的 DAO 異常層次結構。ci
Spring 框架插入了若干個 ORM 框架,從而提供了 ORM 的對象關係工具,其中包括 JDO 、 Hibernate 和 iBatis SQL Map 。全部這些都聽從 Spring 的通用事務和 DAO 異常層次結構。
Web 上下文模塊創建在應用程序上下文模塊之上,爲基於 Web 的應用程序提供了上下文。因此, Spring 框架支持與 Jakarta Struts 的集成。 Web 模塊還簡化了處理多部分請求以及將請求參數綁定到域對象的工做。
MVC 框架是一個全功能的構建 Web 應用程序的 MVC 實現。經過策略接口, MVC 框架變成爲高度可配置的, MVC 容納了大量視圖技術,其中包括 JSP 、 Velocity 、 Tiles 、 iText 和 POI