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

芋道原始碼發表於2019-03-10

點選上方“芋道原始碼”,選擇“設為星標

做積極的人,而不是積極廢人!

原始碼精品專欄

 

來源:http://t.cn/RmwoUr6

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

640?wx_fmt=jpeg
時間線




歡迎加入我的知識星球,一起探討架構,交流原始碼。加入方式,長按下方二維碼噢

640?wx_fmt=jpeg

已在知識星球更新原始碼解析如下:

640?wx_fmt=png

640?wx_fmt=png

640?wx_fmt=png

如果你喜歡這篇文章,喜歡,轉發。

生活很美好,明天見(。・ω・。)ノ♡

相關文章