歡迎光臨
每天分享高質量文章

深入淺出,Spring 框架和 Spring Boot 的故事

  • Spring 框架的歷史
    • 起點
    • Spring 誕生
    • Spring 框架的快速增長
  • Spring Boot 的歷史
  • Spring IO 和 Spring Boot
  • Spring 時間線圖表

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 時間線圖表

時間線

赞(0)

分享創造快樂