Spring的歷史及哲學

Spring的歷史和哲學

1.Spring 歷史

時間回到2002年,當時正是 Java EE 和 EJB 大行其道的時候,不少知名公司都是採用此技術方案進行項目開發。這時候有一個美國的小夥子認爲 EJB 太過臃腫,並非全部的項目都須要使用 EJB 這種大型框架,應該會有一種更好的方案來解決這個問題。spring

爲了證實他的想法是正確的,於2002年10月甚至寫了一本書《 Expert One-on-One J2EE 》,介紹了當時 Java 企業應用程序開發的狀況,並指出了 Java EE 和 EJB 組件框架中存在的一些主要缺陷。在這本書中,他提出了一個基於普通 Java 類和依賴注入的更簡單的解決方案。數據庫

在書中,他展現瞭如何在不使用 EJB 的狀況下構建高質量,可擴展的在線座位預留系統。爲了構建應用程序,他編寫了超過 30,000 行的基礎結構代碼,項目中的根包命名爲 com.interface21,因此人們最初稱這套開源框架爲 interface21,也就是 Spring 的前身。編程

他是誰呢,他就是大名鼎鼎的 Rod Johnson (下圖), Rod Johnson 在悉尼大學不只得到了計算機學位,同時還得到了音樂學位,更使人吃驚的是在回到軟件開發領域以前,他還得到了音樂學的博士學位。如今 Rod Johnson 已經離開了 Spring ,成爲了一個天使投資人,同時也是多個公司的董事,早已走上人生巔峯。架構

在這本書發佈後,一對一的 J2EE 設計和開發一炮而紅。這本書免費提供的大部分基礎架構代碼都是高度可重用的。 2003 年 Rod Johnson 和同伴在此框架的基礎上開發了一個全新的框架命名爲 Spring ,據 Rod Johnson 介紹 Spring 是傳統 J2EE 新的開始。隨後 Spring 發展進入快車道。框架

  • 2004 年 03 月,1.0 版發佈。
  • 2006 年 10 月,2.0 版發佈。
  • 2007 年 11 月改名爲 SpringSource,同時發佈了 Spring 2.5。
  • 2009 年 12 月,Spring 3.0 發佈。
  • 2013 年 12 月,Pivotal 宣佈發佈 Spring 框架 4.0。
  • 2017 年 09 月,Spring 5.0 發佈。

2.Spring是什麼

Spring 是指一個用於構造 JAVA 應用程序的輕量級框架,但這句話包含兩個有趣的地方。首先,你能夠採用 Spring 來構造任何程序,這一 Apache Struts這樣的框架不一樣,你不限定於只編寫 WEB 應用。其次,以上解釋中的「輕量級」並不意味着類數量不多,或者發行包大小很小,實際上,它指的是 Spring 哲學原理的總稱——那就是最少的侵入。 Spring 是輕量級的,意味着你只需對你的程序代碼作不多改動 ( 倘若有的話 ) ,而得到 Spring 核心帶來的好處,你也能夠在任什麼時候候選擇拋棄 Spring ,你會發現這實在很容易。注意,上面這句話只針對 Spring 核心自己——不少附加的 Spring 組件,好比數據訪問,須要與 Spring 框架有相對緊密得多的耦合關係。可是,這些耦合帶來的好處顯而易見。spring-boot

Spring 是一個開源框架,是爲了解決企業應用程序開發複雜性而建立的。框架的主要優點之一就是其分層架構,分層架構容許您選擇使用哪個組件,同時爲 J2EE 應用程序開發提供集成的框架。工具

三、Spring 的體系結構

Spring 框架是一個分層架構,由 7 個定義良好的模塊組成。 Spring 模塊構建在覈心容器之上,核心容器定義了建立、配置和管理 bean 的方式spa

Spring 框架圖:設計

 

1. 核心容器

核心容器提供 Spring 框架的基本功能。核心容器的主要組件是 BeanFactory ,它是工廠模式的實現。BeanFactory 使用控制反轉 (IOC) 模式將應用程序的配置和依賴性規範與實際的應用程序代碼分開 ( 工廠方法 ) 。對象

2.Spring 上下文

Spring 上下文是一個配置文件,向 Spring 框架提供上下文信息。 Spring 上下文包括企業服務,例如JNDI 、 EJB 、電子郵件、國際化、校驗和調度功能。

3.Spring AOP

經過配置管理特性, Spring AOP 模塊直接將面向方面的編程功能集成到了 Spring 框架中。因此,能夠很容易地使 Spring 框架管理的任何對象支持 AOP 。 Spring AOP 模塊爲基於 Spring 的應用程序中的對象提供了事務管理服務。經過使用 Spring AOP ,不用依賴 EJB 組件,就能夠將聲明性事務管理集成到應用程序中。

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 框架支持與 Jakarta Struts 的集成。 Web 模塊還簡化了處理多部分請求以及將請求參數綁定到域對象的工做。

7.Spring MVC 框架

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

相關文章
相關標籤/搜索