1. 程式人生 > >The history of spring and design concept

The history of spring and design concept

-h 表達式 基本 咨詢 minor 復雜 factor rest wro

Spring 框架的歷史

起點

2002 年 10 月,Rod Johnson 撰寫了一本名為 Expert One-on-One J2EE 設計和開發的書。本書由 Wrox出版,介紹了當時 Java 企業應用程序開發的情況,並指出了 Java EE 和 EJB 組件框架中的存在的一些主要缺陷。在這本書中,他提出了一個基於普通 Java 類和依賴註入的更簡單的解決方案。

在書中,他展示了如何在不使用 EJB 的情況下構建高質量,可擴展的在線座位預留系統。為了構建應用程序,他編寫了超過 30,000 行的基礎結構代碼。包含許多可重用的 Java 接口和類,如 ApplicationContext和BeanFactory。由於java接口是依賴註入的基本構建塊,因此他將這些類的根包命名為com.interface21。

一對一的 J2EE 設計和開發一炮而紅。本書免費提供的大部分基礎架構代碼都是高度可重用的。即使在 15 年後,本書及其原則仍然與構建高質量的 Java Web 應用程序相關。

Spring 誕生

在本書發布後不久,開發者 Juergen Hoeller 和 Yann Caroff 說服 Rod Johnson 創建一個基於基礎結構代碼的開源項目。Rod,Juergen 和 Yann 於 2003 年 2 月左右開始合作開發該項目 。Yann 為新框架創造了“Spring”的名字。據 Rod 介紹,Spring 是傳統 J2EE 的新開始。

200 年 6 月,Spring 2.0 在 Apache 2.0 許可下發布。2004 年 3 月,1.0 版發布。有趣的是,在1.0發布之前,spring 就被開發人員廣泛采用。2004 年 8 月,Rod Johnson,Juergen Hoeller,Keith Donald 和Colin Sampaleanu 共同創立了一家專註於 Spring 咨詢,培訓和支持的公司 interface21。

Yann Caroff 在早期離開了團隊,Rod Johnson 在 2012 年離開,Juergen Hoeller 仍然是 Spring 開發團隊的積極成員。

Spring 框架的快速增長

自 2004 年 1.0 版本發布以來,Spring 框架迅速發展。Spring 2.0 於 2006 年 10 月發布,到那時,Spring的下載量超過了 100 萬。Spring 2.0 具有可擴展的 XML 配置功能,用於簡化 XML 配置,支持 Java 5,額外的 IoC 容器擴展點,支持動態語言。

在 Rod 領導下管理 Interface21 項目於 2007 年 11 月更名為 SpringSource。同時發布了 Spring 2.5。Spring 2.5 中的主要新功能包括支持 Java 6 / Java EE 5,支持註釋配置,classpath 中的組件自動檢測和兼容 OSGi 的 bundle。

2007 年,SpringSource 從基準資本獲得了 A 輪融資(1000萬美元)。SpringSource 在此期間收購了多家公司,如Hyperic,G2One 等。2009年8月,SpringSource 以 4.2 億美元被 VMWare 收購。SpringSource 在幾周內收購了雲代工廠,這是一家雲 PaaS 提供商。2015 年,雲代工廠轉型成了非營利雲代工廠。

2009 年 12 月,Spring 3.0 發布。Spring 3.0 具有許多重要特性,如重組模塊系統,支持 Spring 表達式語言,基於 Java 的 bean 配置(JavaConfig),支持嵌入式數據庫(如 HSQL,H2 和 Derby),模型驗證/ REST 支持和對 Java EE 的支持。

2011 年和 2012 年發布了許多 3.x 系列的小版本。2012 年 7 月,Rod Johnson 離開了團隊。2013 年 4月,VMware 和 EMC 通過 GE 投資創建了一家名為 Pivotal 的合資企業。所有的 Spring 應用項目都轉移到了 Pivotal。

2013 年 12 月,Pivotal 宣布發布 Spring 框架 4.0。Spring 4.0 是 Spring 框架的一大進步,它包含了對Java 8 的全面支持,更高的第三方庫依賴性(groovy 1.8+,ehcache 2.1+,hibernate 3.6+等),Java EE 7 支持,groovy DSL for bean 定義,對 websockets 的支持以及對泛型類型的支持作為註入 bean 的限定符。

2014 年至 2017 年期間發布了許多 Spring 框架 4.xx 系列版本。Spring 4.3.7 於 2017 年 3 月發布。Spring 4.3.8 於 2017 年 4 月發布,並成為 4.x 系列中的最後一個。Spring 框架的下一個延續的主要版本是在 5.0 版本展開。

Spring 時間線圖表

技術分享圖片

Spring 的設計理念

前面介紹了 Spring 的三個核心組件,如果再在它們三個中選出核心的話,那就非 Beans 組件莫屬了,為何這樣說,其實 Spring 就是面向 Bean 的編程(BOP,Bean Oriented Programming),Bean 在 Spring 中才是真正的主角。

Bean 在 Spring 中作用就像 Object 對 OOP 的意義一樣,沒有對象的概念就像沒有面向對象編程,Spring 中沒有 Bean 也就沒有 Spring 存在的意義。就像一次演出舞臺都準備好了但是卻沒有演員一樣。為什麽要 Bean 這種角色 Bean 或者為何在 Spring 如此重要,這由 Spring 框架的設計目標決定,Spring 為何如此流行,我們用 Spring 的原因是什麽,想想你會發現原來 Spring 解決了一個非常關鍵的問題他可以讓你把對象之間的依賴關系轉而用配置文件來管理,也就是他的依賴註入機制。而這個註入關系在一個叫 Ioc 容器中管理,那 Ioc 容器就是被 Bean 包裹的對象。Spring 正是通過把對象包裝在 Bean 中而達到對這些對象的管理以及一些列額外操作的目的。

它這種設計策略完全類似於 Java 實現 OOP 的設計理念,當然了 Java 本身的設計要比 Spring 復雜太多太多,但是都是構建一個數據結構,然後根據這個數據結構設計他的生存環境,並讓它在這個環境中按照一定的規律在不停的運動,在它們的不停運動中設計一系列與環境或者與其他個體完成信息交換。這樣想來我們用到的其他框架都是大慨類似的設計理念。




原文地址:https://www.jianshu.com/p/4e66d6544922

     https://www.ibm.com/developerworks/cn/java/j-lo-spring-principle/

The history of spring and design concept