老和尚講故事:跟您叨叨 Spring 框架和 Spring Boot 的歷史

老和尚講故事:跟您叨叨 Spring 框架和 Spring Boot 的歷史

Spring框架可以說是 Java開發人員使用的最流行的應用程序開發框架之一。它目前由大量提供一系列服務的模塊組成。包括模塊容器,為構建橫切關注點提供支持的面向切面編程(AOP),安全框架,數據存取框架,Web應用框架和用於模塊測試提供支持的類。

Spring框架的所有組件都通過依賴注入粘在一起。依賴注入(也稱為控制反轉)使設計和測試鬆散耦合的軟件模塊變得更容易。

多年來 Spring框架已變得足夠成熟。幾乎所有 Java 企業應用需要用到的基礎組件都可以在 Spring框架中找到。但在一個新應用中將所有需要的 Spring組件整合並配置好並不容易。這包括在 gradle/maven中設置依賴庫,使用 xml、註解或 java代碼配置需要的 Spring Bean。Spring開發者意識到這裡的絕大多數工作是可以可以自動化的,Spring Boot出現了!

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 Boot的歷史

2012年 10月,Mike Youngstrom在 Spring jira中創建了一個功能請求,要求在 Spring框架中支持無容器 Web應用程序體系結構。他談到了在主容器引導 spring容器內配置 Web容器服務。這是 jira請求的摘錄:

我認為 Spring的 Web應用體系結構可以大大簡化,如果它提供了從上到下利用 Spring組件和配置模型的工具和參考體系結構。在簡單的 main方法引導的 Spring容器內嵌入和統一這些常用Web容器服務的配置。

這一要求促使了 2013年初開始的 Spring Boot項目的研發。2014年 4月,Spring Boot 1.0.0發佈。從那以後,一些 Spring Boot版本出來了:

  • Spring boot 1.1(2014年 6月) -改進的模板支持,gemfire支持,elasticsearch和 apache solr的自動配置。

  • Spring Boot 1.2(2015年 3月) -升級到 servlet 3.1 / tomcat 8 / jetty 9,spring 4.1升級,支持 banner / jms / SpringBootApplication註解。

  • Spring Boot 1.3(2016年 12月) - Spring 4.2升級,新的 spring-boot-devtools,用於緩存技術(ehcache,hazelcast,redis和 infinispan)的自動配置以及完全可執行的 jar支持。

  • Spring boot 1.4(2017年1月) - spring 4.3升級,支持 couchbase / neo4j,分析啟動失敗和RestTemplateBuilder。

  • Spring boot 1.5(2017年2月) -支持 kafka / ldap,第三方庫升級,棄用 CRaSH支持和執行器記錄器端點以動態修改應用程序日誌級別。

  • Spring boot 2.0(2018年 03月)-基於 Java 8,支持 Java 9,支持 Quartz ,調度程序大大簡化了安全自動配置,支持嵌入式 Netty

Spring Boot簡單性使 java開發人員能夠快速大規模地採用該項目。Spring Boot可以說是在 Java中開發基於 REST的微服務 Web應用程序的最快方法之一。

Spring IO和 Spring Boot

2014年 6月,Spring io 1.0.0發佈。Spring io代表應用程序庫之間的一組預定義的依賴關係。這意味著如果使用特定的 Spring IO版本創建項目,則不再需要定義庫的版本。

即使是 Spring Boot啟動項目也是這個 Spring IO的一部分。例如,如果你使用的是 spring io 1.0.0,則在添加啟動器項目的依賴關係時,不需要指定 spring啟動版本。它會自動假定它是spring boot 1.1.1.RELEASE。

概念上,spring io由模塊的基礎層和執行層域特定的運行時(DSR)組成。基礎層代表核心彈簧模塊和第三方依賴關係的策劃清單。Spring Boot是 Spring IO提供的執行層 DSR之一。因此,現在有兩種主要的方法來構建應用程序:

  • 使用或不使用 spring io直接使用 Spring Boot。

  • 使用所需 Spring模塊的 Spring IO。

請注意,通常每當發佈新的 Spring框架版本時,都會觸發新的 Spring啟動版本。這將反過來引發新的Spring Boot版本。

2015年 11月,Spring io 2.0.0發佈。這提供了一套更新的依賴項,包括 Spring Boot 1.3。2016年 7月,Spring io團隊決定使用按字母順序排版的方案。Spring IO為此使用城市名稱。在字母版本方案中,新名稱表示依賴庫的次要和主要升級。

2016年 9月,雅典發佈了首個按字母順序排列的城市命名的 Spring io平臺版本。它包含 Spring Boot 1.4和其他第三方庫升級。此後,雅典發佈了多個服務版本(SR1,SR2,SR3和SR4)。

2017年 3月,最新的 Spring io平臺(Brussels-SR1)發佈。它使用最新的 Spring Boot版本 1.5.2。下一個 Spring io平臺是開羅計劃推出的 spring boot 2.0和 spring framework 5.0。

Spring 時間線圖表

老和尚講故事:跟您叨叨 Spring 框架和 Spring Boot 的歷史

Story of SpringFramework & Spring Boot



分享到:


相關文章: